Javascript 多电平滤波器阵列
我需要遍历一个对象数组来比较两个值。 这是我的阵列:Javascript 多电平滤波器阵列,javascript,arrays,Javascript,Arrays,我需要遍历一个对象数组来比较两个值。 这是我的阵列: const data = [{ "uid": "6448ae4a79", "title": "New Group", "slug": "new-group", "items": [ { "uid": "8602b1cf1f", "title": "N
const data = [{
"uid": "6448ae4a79",
"title": "New Group",
"slug": "new-group",
"items": [
{
"uid": "8602b1cf1f",
"title": "New sub group",
"slug": "new-sub-group",
"items": [
{
"uid": "8b6f962ff1",
"_id": "5d9b453285a8982000b4a9e6",
"title": "fsds",
"choices": [
{
"uid": "a5ccb273a2",
"_id": "5d9b453285a8982000b4a9eb",
"type": null,
"text": "sd",
"label": null,
"value": null
},
{
"uid": "8ab0d45386",
"_id": "5d9b453285a8982000b4a9e8",
"type": null,
"text": "sdwewe",
"label": null,
"value": null
}
]
},
{
"uid": "290db30b53",
"_id": "5d9b699185a8982000b4aa1d",
"title": "czxczxc",
"logic": {
"viewControl": [
{
"action": "lock",
"group": "6448ae4a79",
"subGroup": "8602b1cf1f",
"question": "8b6f962ff1",
"equalTo": "8ab0d45386"
}
]
},
"choices": [
{
"uid": "3cce36d426",
"_id": "5d9b699185a8982000b4aa1f",
"type": 0,
"text": "wqewq",
"label": "dsfsd",
"value": null
}
]
}
]
}
]
}]
我必须将items.items.logic.viewControl[0].equalTo与choices.uid进行比较。例如:“equalTo”:“8ab0d45386”=“uid”:“8ab0d45386”
我该怎么做?我尝试了filter、map和foreach,但如果您的目标是检查viewControl.equalTo(来自不同的项目)是选项之一,则我根本无法做到这一点,因此解决方案可能如下所示:
选项。uid
choices.uid
是否存在const数据=[{
“uid”:“6448ae4a79”,
“标题”:“新组”,
“slug”:“新组”,
“项目”:[
{
“uid”:“8602b1cf1f”,
“标题”:“新分组”,
“slug”:“新子组”,
“项目”:[
{
“uid”:“8b6f962ff1”,
“_id”:“5d9b453285a8982000b4a9e6”,
“标题”:“消防队”,
“选择”:[
{
“uid”:“a5ccb273a2”,
“_id”:“5d9b453285a8982000b4a9eb”,
“类型”:空,
“文本”:“sd”,
“标签”:空,
“值”:空
},
{
“uid”:“8ab0d45386”,
“_id”:“5d9b453285a8982000b4a9e8”,
“类型”:空,
“文本”:“sdwewe”,
“标签”:空,
“值”:空
}
]
},
{
“uid”:“290db30b53”,
“_id”:“5d9b699185a8982000b4aa1d”,
“标题”:“czxczxc”,
“逻辑”:{
“视图控件”:[
{
“操作”:“锁定”,
“组”:“6448ae4a79”,
“分组”:“8602b1cf1f”,
“问题”:“8b6f962ff1”,
“equalTo”:“8ab0d45386”
}
]
},
“选择”:[
{
“uid”:“3cce36d426”,
“_id”:“5d9b699185a8982000b4aa1f”,
“类型”:0,
“文本”:“wqewq”,
“标签”:“dsfsd”,
“值”:空
}
]
}
]
}
]
}];
// 1. 收集选项.uid
const choicesUids={};
data.forEach((d)=>{
d、 items.forEach((i1)=>{
i1.items.forEach((i2)=>{
i2.choices.forEach(c=>{choicesUids[c.uid]=true})
});
});
});
// 2. 检查逻辑
data.forEach((d,ix0)=>{
d、 items.forEach((i1,ix1)=>{
i1.items.forEach((i2,ix2)=>{
if(i2.logic&&i2.logic.viewControl){
i2.logic.viewControl.forEach((vc,ix3)=>{
console.log(`data[${ix0}].items[${ix1}].items[${ix2}].logic.viewControl[${ix3}].equalTo:${vc.equalTo}-是${choicesUids[vc.equalTo]?'GOOD':'BAD'});
});
}
});
});
});
“我尝试了filter、map和foreach,但我根本做不到”-至少发布一种方法,我们可能会提供帮助。@Andreas您想要什么结果?您试图递归搜索任何uid匹配的对象?在问题本身->@zfrisch中,我试图在数组中找到一个值不是null的选项。项[0]。项[1]将被锁定,直到uid等于equalTo的选项具有非null的值