【发布时间】:2020-01-08 17:57:31
【问题描述】:
我有一个像这样的 Json 响应。
[
{
"name": "name1",
"id": "1"
},
{
"name": "name2",
"id": "2"
},
{
"name": "name4",
"id": "4"
},
{
"name": "name5",
"id": "5"
}
]
我有另一个名为“a”的数组,它只有 id [1,2,3,4,5]。现在我必须将数组中的每个元素与 json 响应对象 id 进行比较。例如,数组“a”的第一个元素存在于 json 响应对象中,则应检索其各自的名称并将其存储在另一个名为“b”-> [name1] 的新数组中。数组“a”的第二个元素存在于 json 响应对象中,则应检索其各自的名称并将其附加到“b”数组 -> [name1,name2] 中。 json 响应对象中不存在数组“a”的第三个元素,因此没有名称。在这种情况下,应该在 b 数组中为该 id -> [name1,name2,0] 添加“0”而不是 name。数组“a”的第四个元素存在于 json 响应对象中,则应检索其各自的名称并将其附加到 b 数组 -> [name1,name2,0,name4] 中。数组“a”的第五个元素存在于json响应对象中,则应检索其各自的名称并将其附加到b数组中-> [name1,name2,0,name4,name5]。
我尝试通过以下代码来实现这一点。但我得到的不是 [name1,name2,0,name4,name5] ,而是 [name1,name2,name4,name5,0]
for (var i = 0; i < a.length; i++) {
if (a.includes(jsonResponse[i].id)) {
b.push(jsonResponse[i].name);
}
else{
b.push("0");
}
}
【问题讨论】:
-
您正在循环遍历
a的索引,但将其用作jsonResponse中的索引。 -
是的。有没有其他办法?
标签: javascript arrays json