JavaScript 如何将遍历获取的多个cita数组合并到citaArray?
合并目标数组的实现方法
你当前的循环逻辑仅完成了单个cita数组的读取与打印,没有将这些数组的内容合并到初始化的citaArray中,只需要在循环内补充数组拼接逻辑即可实现需求,可根据项目兼容要求选择以下两种方案:
方案1:基于现有循环的兼容写法
完全适配你已有的代码结构,适配所有JS运行环境:
let citaArray = []; for (var key in data) { // 跳过对象继承的非自身属性,避免遍历异常值 if (!data.hasOwnProperty(key)) continue; const dataTest = data[key].cita; // 校验当前值为数组,避免非数组类型触发报错 if (Array.isArray(dataTest)) { // 将当前数组合并到总数组 citaArray = citaArray.concat(dataTest); } }
方案2:ES6 简洁写法
适合现代浏览器/Node.js环境,代码量更短:
const citaArray = Object.values(data) // 取出每个对象下的cita字段 .map(item => item.cita) // 过滤掉非数组的异常值 .filter(Array.isArray) // 将嵌套的数组拍平为单一一维数组 .flat();
最终合并结果
执行完成后,citaArray会将你控制台打印的三个独立数组合并为连续的一维数组,最终值为:
[ "60669c353c16a2248c51bd2a", "606a74c28f8d950dcc77e4f8", "606e72ec3615341594a2b26d", "606f01075b501b295c1a9710", "606f9117cd77280afc4fa09e", "606a762bb2a4f50128df692c", "6049c2a5a1e5523e203c323a", "606e70c86284114e9897b343", "606e710ecc23bc2260773a64" ]
注意事项
- 若单个
cita数组长度超过万级,优先使用concat方法合并,避免用push(...dataTest)的展开写法触发栈溢出 - 必须加上
Array.isArray校验,避免遇到cita字段为空、非数组的异常场景导致代码中断 - 若不需要兼容非常老旧的IE环境,优先选择ES6写法,逻辑更清晰易维护
内容的提问来源于stack exchange,提问作者NathaThink
相关产品推荐
相关产品推荐

