reactjs 如何在React中将嵌套数组中的所有对象提取到一个数组中

ssm49v7z  于 2022-12-22  发布在  React
关注(0)|答案(2)|浏览(149)

我有一个这样的数组,它是useState的初始状态:

Array [ (6) […], (6) […] ]
​
0: Array(6) [ undefined, {…}, {…}, … ]
​
1: Array(6) [ undefined, undefined, {…}, … ]

例如:

const[arr,setArr] = React.useState([
[
{label: "Beklam", id: 5032},
{label: "Dx6", id: 5052},
undefined,
undefined
],
[
{label: "item1", id: 50567},
{label: "item4", id: 505567},
{label: "item6", id: 50537},
{label: "itemA", id: 505647},
undefined,
undefined,
]
])

我想把它做成这样:

[
{label: "Beklam", id: 5032},
{label: "Dx6", id: 5052},
{label: "item1", id: 50567},
{label: "item4", id: 505567},
{label: "item6", id: 50537},
{label: "itemA", id: 505647},
]

我应该提到undefined值来自输入。在我的例子中,有可能接收undefined,我应该处理它。
这是从console.log输出的浏览器.有一个数组与两个数组在它里面.和每一个这两个数组有6个元素在他们里面.他们可以是超过6.所以这数量的元素是不是静态的,作为数组.
阵列可具有多个子阵列。
就像这样:

0: undefined
1: undefined
2: Object { label: "Beklam", id: 5032 }
3: Object { label: "0/65%", id: 5061 }
4: undefined
5: undefined

我想把子数组中的所有对象提取到一个对象中。显然,把这两个数组中的所有值提取到一个包含它们对象的数组中。
并且如果可能,过滤undefined值并且不显示它们。而不是尝试稍后在变量上使用array.filter
我实际上还没有遇到过这样的问题,所以我真的不知道如何处理多维数组。

luaexgnf

luaexgnf1#

你可以用flatmap把它变成一维数组。

console.log(arr.flatMap((e) => e));

或者更简单:

console.log(arr.flat());

并过滤掉未定义的值:

console.log(arr.flatMap((e) => e.filter((f) => f !== undefined)));
kxkpmulp

kxkpmulp2#

您可以使用flat将其扁平化为单个数组。
您可以使用filter删除undefined条目。

const data = arr.flat(999).filter(Boolean)

相关问题