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

如何单次遍历对象数组同时生成两个对应字段的数组

实现方案

基础写法(易理解)

直接在单次遍历中同时给两个结果数组推送对应字段即可,仅执行1次O(n)复杂度的遍历:

const array = [{name: "first", val: 1}, {name: "second", val: 2}];
const arrayOne = [];
const arrayTwo = [];

array.forEach(item => {
  arrayOne.push(item.name);
  arrayTwo.push(item.val);
});

函数式写法

用reduce方法可以不用提前声明变量,一次迭代直接返回两个结果数组:

const array = [{name: "first", val: 1}, {name: "second", val: 2}];
const [arrayOne, arrayTwo] = array.reduce((acc, curr) => {
  acc[0].push(curr.name);
  acc[1].push(curr.val);
  return acc;
}, [[], []]);

两种写法都只会遍历原数组一次,数组长度较大时,性能优势会明显高于两次单独map提取的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:48:02