繁体   English   中英

合并 arrays 内的对象,这些对象位于数组内

[英]Merge objects inside arrays, which are inside an array

目前我有一个小问题,我不太能够解决。 我有一个数组,它可以包含单个或多个 arrays,它可以包含多个对象。 例如:

const arr = [
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ],
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ]
]

我想将基于特定属性(此处为“值”)的对象合并到一个数组中,这样我的结果将如下所示:

const result = ["value A", "value B", "value C", "value A", "value B", "value C"]

有人对此有想法吗? 谢谢!

 const arr = [ [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ] let x = arr.flat().map(v=>v.value); console.log(x);

我相信你想要的结果是一个数组,而不是 object。 您的 output 示例无效。

无论如何,使用简单的减少:

 const arr = [ [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ] const result = arr.reduce((acc, cur) => { const values = cur.map(({value}) => value); return acc.concat(values) }, []); console.log(result);

像这样?

const arr = [
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ],
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ]
]

function mergeArray( arr, property ) {
  const res = [];
  for (const innerArr of arr) {
    for (const obj of innerArr) {
      res.push(obj[property]);
    }
  }
  return res;
}

console.log(mergeArray(arr, "value"));

我使用 Array.prototype 的嵌套 reduce 和 map 方法

 { const arr = [ [{ "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [{ "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ]; const newArr = arr.reduce((carry, item) => { carry.push(...item.map(item2 => item2.value)) return carry; }, []) console.log(newArr) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM