javascript - 合并对象中的多个数组

标签 javascript arrays

<分区>

我正在寻找一种将多个数组属性合并到一个对象中的有效方法。

对象,可以有多个数组属性:

{
  "col0Codes": [
    "ABC",
    "XYZ",
    "UYA",
    "ZZA",
    "AAW",
    "MYP"
  ],
  "col1Codes": [
    "CNA",
    "ZYA",
    "OIA",
    "POQ",
    "LMO",
    "OPI"
  ],
  "col2Codes": [
    "CNA",
    "ZYA",
    "OIA",
    "POQ",
    "LMO",
    "OPI"
  ],
  "col3Codes": [
    "..."
  ],
  "col4Codes": [
    "..."
  ],
  ...
}

结果:所有代码都在一个数组中

["ABC","XYZ","UYA","ZZA","AAW","MYP","CNA","ZYA","OIA","POQ","LMO","OPI",....]

我试过使用 concat 但这每次都会创建一个新数组并覆盖之前的数组,我觉得这速度不快且内存效率不高。

let colCodes = []
 for (let i in data) {
 colCodes = colCodes .concat(i)
}
console.log(activityCodes)

我试过使用push,但出于某种原因,它没有将所有条目合并到一个数组中,而是创建了一个包含对象中 Prop 数量的数组,如下所示

let colCodes = []
  for (let i in data) {
  colCodes.push(i)
}
console.log(colCodes)
[Array(6), Array(5), ....]

我是否可以使用 reduce 来实现此目的,如果那样会更快且内存效率更高?

最佳答案

您可以使用 Object.values() 获取数组数组,然后使用 Array.flat() 将它们展平为单个数组:

const data = {"col0Codes":["ABC","XYZ","UYA","ZZA","AAW","MYP"],"col1Codes":["CNA","ZYA","OIA","POQ","LMO","OPI"],"col2Codes":["CNA","ZYA","OIA","POQ","LMO","OPI"]};

const result = Object.values(data).flat();

console.log(result);

旧答案:

您可以获得Object.values() , 然后按 spreading 合并进入Array.concat() :

const data = {"col0Codes":["ABC","XYZ","UYA","ZZA","AAW","MYP"],"col1Codes":["CNA","ZYA","OIA","POQ","LMO","OPI"],"col2Codes":["CNA","ZYA","OIA","POQ","LMO","OPI"]};

const result = [].concat(...Object.values(data));

console.log(result);

关于javascript - 合并对象中的多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587929/

相关文章:

javascript - 使用 getter 和 setter 的意外行为

c - 指针: "Expected identifier before ' (' token"

python - 在 python 中设置一个数组等于其条目的前半部分

arrays - 查找给定数组中每个窗口大小的最大值和最小值

javascript - 使 SVG 图形在进入窗口时播放(滚动)

javascript - 通过匹配属性键而不是值来查找元素

javascript - 如何在 Rails 中异步/使用 AJAX 呈现部分内容?

javascript - JavaScript 代码块之间保持什么状态?

javascript - 具有定义列数的 Reactjs 网格布局

c++ - 如何生成通过交换元素(例如 : from {0, 1,2} 到 {0,2,1})将数组更改为另一个数组的步骤?