嗨,我有如下数据,
const items = [
{
id: '1',
color: 'green',
name: 'item1',
polygons: [
{
id: '1',
coordinates: [
{
latitude: '25.00',
longitude: '-25.99',
}
{
latitude: '15.00',
longitude: '-25.99',
}
{
latitude: '25.00',
longitude: '-35.99',
}
],
}
]
subItems: [
{
id: '2',
name: 'subitem-1',
color: 'green',
polygons: [
{
id: '2',
coordinates: [
{
latitude: '25.00',
longitude: '-25.99',
}
{
latitude: '15.00',
longitude: '-25.99',
}
{
latitude: '25.00',
longitude: '-35.99',
}
],
}
]
}
],
},
]
我要做什么?
从Items数组中,我想使用JavaScript或打字稿找到与id ='2'匹配的索引。
因此,基本上item和subItem具有不同的ID,并且它们永不匹配,我想遍历每个项目并检查其ID是否与ID 2匹配,然后检查该项目的每个子项目并检查ID是否与2匹配。
如果匹配项返回索引。
我尝试了以下类似的方法,
const ItemIndex = Items.findIndex(
(Item: any) => Item.id === '2'
);
这将仅检查项目,而不检查子项目内。我该如何修改此代码以也检查subItems ID?
有人可以帮我这个忙吗?谢谢。
答案 0 :(得分:0)
这是重复的question,但是好的,我也可以在这里回答。
正确的搜索可以这样进行:
items.findIndex((item) => item.subItems.some((sub) => sub.id == '2'))
示例:
const items = [{
id: '1',
color: 'green',
name: 'item1',
polygons: [{
id: '1',
coordinates: [{
latitude: '25.00',
longitude: '-25.99',
},
{
latitude: '15.00',
longitude: '-25.99',
},
{
latitude: '25.00',
longitude: '-35.99',
}
],
}],
subItems: [{
id: '1',
name: 'subitem-1',
color: 'green',
polygons: [{
id: '2',
coordinates: [{
latitude: '25.00',
longitude: '-25.99',
},
{
latitude: '15.00',
longitude: '-25.99',
},
{
latitude: '25.00',
longitude: '-35.99',
}
],
}]
}],
},
{
id: '2',
color: 'red',
name: 'item2',
polygons: [{
id: '3',
coordinates: [{
latitude: '25.00',
longitude: '-25.99',
},
{
latitude: '15.00',
longitude: '-25.99',
},
{
latitude: '25.00',
longitude: '-35.99',
}
],
}],
subItems: [{
id: '2',
name: 'subitem-1',
color: 'red',
polygons: [{
id: '5',
coordinates: [{
latitude: '25.00',
longitude: '-25.99',
},
{
latitude: '15.00',
longitude: '-25.99',
},
{
latitude: '25.00',
longitude: '-35.99',
}
],
}]
}],
}
]
const itemIndex = items.findIndex((item) => item.subItems.some((sub) => sub.id == '2'));
console.log('Item index with subItems with id=2 is:', itemIndex)