【问题标题】:Remove one level from object array从对象数组中删除一级
【发布时间】:2021-07-22 15:26:48
【问题描述】:

我正在尝试以最简单和最有效的方式删除数组的索引。这是这样的数组:

拥有这个数组(见片段):

let arr = [];
arr.push([{id:1}]);
arr.push([{id:2}, {id: 3}]);
arr.push([{id:4}]);
console.log(arr)

预期的结果是一个将所有对象连接到同一个索引中的数组。

[
{id: 1},
{id: 2},
{id: 3},
{id: 4}
]

如果我迭代数组上的每个元素并将每个对象添加到一个新数组中,我可以获得我期望的结果,但必须有一个函数或简化解码的东西..

提前致谢

【问题讨论】:

  • const newArr = arr.map(e => e[0]);
  • concat 也许?

标签: javascript arrays angular typescript


【解决方案1】:

是的,有!是flat() 方法(见here

let arr = [
[{id:1}],
[{id:2}],
[{id:3}],
[{id:4}]
];
console.log(arr.flat())

它也适用于更多 annidated 子列表,传递 depth 参数。

对于那些使用 typescript 的人,记得按照 here 的说明添加 es2019

【讨论】:

  • 它不适用于带有打字稿的角度,因为它在默认编译器中无法识别,我最终不得不使用arr.reduce((acc, val) => acc.concat(val), []),但您的功能仍然是我正在寻找的,我将接受作为有效答案,您能否将此代码添加到使用打字稿的人的答案中?谢谢!
  • @David 您也可以将flat 方法与打字稿一起使用。查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2016-11-08
  • 1970-01-01
  • 2019-04-30
  • 2021-03-21
相关资源
最近更新 更多