过滤特定对象的数组
Filter array of specific objects
如何在javascript中使用filter或forEach只输出没有parentId的对象和只有一级parentId的对象
应输出 ID 为:1681、1682 和 1683 的对象。
不应输出 ID 为:1685、1686 和 1687 的对象。
array = [ {
"id": 1681,
"label": "1",
"url": "page1",
},
{
"id": 1682,
"label": "2",
"url": "page1",
},
{
"id": 1683,
"label": "a",
"url": "page1",
"parentId": 1681,
},
{
"id": 1685,
"label": "aa",
"url": "page1",
"parentId": 1683,
},
{
"id": 1686,
"label": "aaa",
"url": "page1",
"parentId": 1683,
},
{
"id": 1687,
"label": "aaaa",
"url": "page1",
"parentId": 1683,
}
]
像这样...
array.filter(({item}) => !item.parentId ? item.id : item.parentId)
像这样的东西应该可以工作:
const result = array.filter(object => object.parentId === undefined);
如果我们已经从过滤器函数中找到了 parentId,我们必须保存信息。一个方便的方法是在柜台上使用 prefix operator ++
。这样我们就可以绕过 =
的显式、长赋值。相反,我们之前做到了。
此外 destructuring assignment 我们可以轻松地提取数组项的 parentId 并编写一个非常短的过滤器:
array=[{id:1681,label:"1",url:"page1"},{id:1682,label:"2",url:"page1"},{id:1683,label:"a",url:"page1",parentId:1681},{id:1685,label:"aa",url:"page1",parentId:1683},{id:1686,label:"aaa",url:"page1",parentId:1683},{id:1687,label:"aaaa",url:"page1",parentId:1683}];
window.parentIdCount = 0;
window.filtered =
array.filter(({parentId}) => !parentId || ++parentIdCount <= 1)
console.log(filtered)
如何在javascript中使用filter或forEach只输出没有parentId的对象和只有一级parentId的对象
应输出 ID 为:1681、1682 和 1683 的对象。
不应输出 ID 为:1685、1686 和 1687 的对象。
array = [ {
"id": 1681,
"label": "1",
"url": "page1",
},
{
"id": 1682,
"label": "2",
"url": "page1",
},
{
"id": 1683,
"label": "a",
"url": "page1",
"parentId": 1681,
},
{
"id": 1685,
"label": "aa",
"url": "page1",
"parentId": 1683,
},
{
"id": 1686,
"label": "aaa",
"url": "page1",
"parentId": 1683,
},
{
"id": 1687,
"label": "aaaa",
"url": "page1",
"parentId": 1683,
}
]
像这样...
array.filter(({item}) => !item.parentId ? item.id : item.parentId)
像这样的东西应该可以工作:
const result = array.filter(object => object.parentId === undefined);
如果我们已经从过滤器函数中找到了 parentId,我们必须保存信息。一个方便的方法是在柜台上使用 prefix operator ++
。这样我们就可以绕过 =
的显式、长赋值。相反,我们之前做到了。
此外 destructuring assignment 我们可以轻松地提取数组项的 parentId 并编写一个非常短的过滤器:
array=[{id:1681,label:"1",url:"page1"},{id:1682,label:"2",url:"page1"},{id:1683,label:"a",url:"page1",parentId:1681},{id:1685,label:"aa",url:"page1",parentId:1683},{id:1686,label:"aaa",url:"page1",parentId:1683},{id:1687,label:"aaaa",url:"page1",parentId:1683}];
window.parentIdCount = 0;
window.filtered =
array.filter(({parentId}) => !parentId || ++parentIdCount <= 1)
console.log(filtered)