如果我有一个数组(sub),该数组具有自己的对象,每个对象中都有数组,并且我正在寻找id === 9之类的特定值,我将如何找到对象的索引和索引在那个对象的数组中?
Set rngPasted = Selection
SortGreen = Intersect(Columns(3), Selection.Rows(1)).Address
SortRed = Intersect(Columns(4), Selection.Rows(1)).Address
答案 0 :(得分:1)
如果您确定所有子数组中只有一个匹配元素,请使用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[i].s
,其中匹配的元素找到了元素。
注意flatMap
是该标准的较新版本,因此可能无法在较旧的浏览器中使用。如果您需要解决的话,请务必使用类似Babel的polyfill或Transpiler。
答案 1 :(得分:0)
尝试一下:
let a = {
sub: [
{
id: 1,
s: [
{id: 5},
{id : 1}
]
},
{
id: 2,
s: [
{id: 6},
{id: 3}
]
},
{
id: 3,
s: [
{id: 9},
{id: 2}
]
}
]
}
v = 9
id1 = a.sub.findIndex(e => e.s.findIndex(ee => ee.id === v)!= -1)
id2 = a.sub[id1].s.findIndex(e => e.id === v )
console.log(id1) //index of the object
console.log(id2) //index within that object's s array