如果我有一个数组(子),它有自己的对象,每个对象中都有数组,并且我正在寻找特定值,例如 id === 9,我将如何找到对象的索引和索引在该对象的数组中?
let a = {
sub: [
{
id: 1,
s: [
{id: 5},
{id : 1}
]
},
{
id: 2,
s: [
{id: 6},
{id: 3}
]
},
{
id: 3,
s: [
{id: 9},
{id: 2}
]
}
]
}
console.log(a.sub.findIndex(a => a.s.findIndex(z => z.id === 9)))
最佳答案
如果您确定所有子数组中只有一个匹配元素,这里有一个关于 flatMap
的小技巧。 .
let a = {
sub: [
{
id: 1,
s: [
{id: 5},
{id: 1}
]
},
{
id: 2,
s: [
{id: 6},
{id: 3}
]
},
{
id: 3,
s: [
{id: 9},
{id: 2}
]
}
]
}
console.log(a.sub.flatMap((a, i) => {
const j = a.s.findIndex(z => z.id === 9);
return j > -1 ? [i, j] : []
}));
这将返回一个包含索引的数组,i
,在 a.sub
其中找到匹配元素,后跟索引, j
,在 a.sub[<em>i</em>].s
找到匹配元素的位置。
注意flatMap
是标准中相对较新的补充,因此它可能无法在较旧的浏览器中工作。如果您担心这个问题,请务必使用 Polyfill 或像 Babel 这样的转译器。
关于javascript - 查找嵌套数组中项目的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844052/