gpt4 book ai didi

javascript - 在 javascript 中按项目的属性过滤列表

转载 作者:行者123 更新时间:2023-11-29 10:29:18 24 4
gpt4 key购买 nike

我可以通过这个过滤一个纯列表:

var list = [1, 2, 3, 4, 5, 1, 3]

function list_filter(list, value) {

return list.filter(function (item) {
if (item === value) {
return true
}
})

}

console.log(list_filter(list, 1)) // there will print `[1, 1]`

但我对过滤器有进一步的要求,如下所示:

var a = [

{a:'1', b:"2", c:3, d: {id:'d1'}},
{a:'1', b:"2", c:3, d: {id:'d2'}},
{a:'1', b:"2", c:3, d: {id:'d1'}},
{a:'1', b:"2", c:3, d: {id:'d3'}},
{a:'1', b:"2", c:3, d: {id:'d3'}},
{a:'1', b:"2", c:3, d: {id:'d4'}}
]

我想通过 item.d.id 过滤列表

我想这样list_filter:

function list_filter(list, 'd.id', value) ... // the value is the filter id

或:

function list_filter(list, ['d', 'id'], value) ... 

我的意思是,

list_filter(a, ['d', 'id'], 'd1') 

获取过滤后的列表。 ['d', 'id'] 可能是 ['d', 'e', 'id'] 或更长。

最佳答案

您可以在 .filter 中使用 reduce 来标识目标值:

var a=[{a:'1',b:"2",c:3,d:{id:'d1'}},{a:'1',b:"2",c:3,d:{id:'d2'}},{a:'1',b:"2",c:3,d:{id:'d1'}},{a:'1',b:"2",c:3,d:{id:'d3'}},{a:'1',b:"2",c:3,d:{id:'d3'}},{a:'1',b:"2",c:3,d:{id:'d4'}}];
const list_filter = (arr, keyArr, value) => (
arr.filter(obj => (
value === keyArr.reduce((currObj, key) => currObj[key], obj)
)
));

console.log(list_filter(a, ['d', 'id'], 'd3'));

关于javascript - 在 javascript 中按项目的属性过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50444074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com