You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:将扫描条码得到的字符串数组转换为结构化对象数组

实现方案

我们可以通过一次遍历完成转换,不需要复杂的索引计算,逻辑如下:

  • 初始化空的结果数组存储最终的对象列表
  • 声明临时变量存储当前正在组装的订单对象
  • 遍历原始数组的每一个元素:
    • 遇到NEW关键字时,如果当前已经有正在组装的订单对象,先把它推入结果数组
    • 之后新建一个订单对象,下一个遍历到的元素赋值给该对象的order_id属性,同时初始化空的serial_numbers数组
    • 非NEW且已经进入订单组装阶段的元素,直接推入当前订单的serial_numbers数组
  • 遍历结束后,把最后一个组装完成的订单对象推入结果数组

示例代码如下:

const array = ['NEW', '1111', 'serial1', 'serial2', 'NEW', '2222', 'serial3', 'serial4'];
const result = [];
let currentOrder = null;

for (const item of array) {
  if (item === 'NEW') {
    // 遇到NEW,先保存之前存在的订单
    if (currentOrder) {
      result.push(currentOrder);
    }
    // 新建当前订单占位,下一个元素即为order_id
    currentOrder = {
      order_id: '',
      serial_numbers: []
    };
  } else {
    if (currentOrder.order_id === '') {
      // 刚新建订单后的第一个元素是order_id
      currentOrder.order_id = item;
    } else {
      // 其余元素为序列号
      currentOrder.serial_numbers.push(item);
    }
  }
}

// 遍历结束后加入最后一个组装完成的订单
if (currentOrder) {
  result.push(currentOrder);
}

console.log(result);

运行后得到的result就是你需要的目标结构,单订单、多序列号等边界场景都可以正常适配。

内容的提问来源于stack exchange,提问作者Kheber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:12:00