我有一个 REST API,我从中获取 json 数据并将它们存储在数组中。 API 如下所示:
[
{
"id": "100",
"name": "Person1",
"number": "+91-8980439023"
},
{
"id": "102",
"name": "Person2",
"number": "+91-5980339023"
},
{
"id": "105",
"name": "Person3",
"number": "+91-8980439023"
},
{
"id": "101",
"name": "Person4",
"number": "+91-8980439023",
"parent": "105"
},
{
"id": "110",
"name": "Person5",
"number": "+91-8980439023"
},
{
"id": "115",
"name": "Person6",
"number": "+91-9834295899",
"parent": "100"
}
]
一些数据有“parent”字段。“parent”字段中的值是其他数据的“id”。现在我想将这些在其他数据的“父”字段中有引用的数据存储在一个单独的数组中。例如: id=101 的数据具有值为 105 的“父”键,这又是第三个数据的 id。因此 id=105 的数据应存储在单独的数组中。
我怎样才能以简单且可扩展的方式进行操作?
最佳答案
尝试
let parents = data.filter(d=> data.some(c=> c.parent==d.id));
let data = [
{
"id": "100",
"name": "Person1",
"number": "+91-8980439023"
},
{
"id": "102",
"name": "Person2",
"number": "+91-5980339023"
},
{
"id": "105",
"name": "Person3",
"number": "+91-8980439023"
},
{
"id": "101",
"name": "Person4",
"number": "+91-8980439023",
"parent": "105"
},
{
"id": "110",
"name": "Person5",
"number": "+91-8980439023"
},
{
"id": "115",
"name": "Person6",
"number": "+91-9834295899",
"parent": "100"
}
];
let parents = data.filter(d=> data.some(c=> c.parent==d.id));
console.log(parents);
要有 O(2n) 的复杂度,首先将父 id 放入某个哈希表,然后进行过滤
let data = [
{
"id": "100",
"name": "Person1",
"number": "+91-8980439023"
},
{
"id": "102",
"name": "Person2",
"number": "+91-5980339023"
},
{
"id": "105",
"name": "Person3",
"number": "+91-8980439023"
},
{
"id": "101",
"name": "Person4",
"number": "+91-8980439023",
"parent": "105"
},
{
"id": "110",
"name": "Person5",
"number": "+91-8980439023"
},
{
"id": "115",
"name": "Person6",
"number": "+91-9834295899",
"parent": "100"
}
];
let hash = {};
data.forEach(d=> hash[d.parent]=d);
let parents = data.filter(d=> d.id in hash);
console.log(parents);
关于javascript - 如何访问存储在由一个字段链接的数组对象中的两个数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59087961/