gpt4 book ai didi

javascript - 使用 lodash 按键过滤嵌套对象

转载 作者:行者123 更新时间:2023-11-30 11:51:46 27 4
gpt4 key购买 nike

我有一个像这样的嵌套对象-

data = [{ 'title': 'Hey',
'foo': 2,
'bar': 3
}, {
'title': 'Sup',
'foo': 3,
'bar': 4
}, {
'title': 'Remove',
'foo': 3,
'bar': 4
}]

我想通过以下标题数组过滤它(因此,如果任何标题以其中任何一个开头,那么我想要那个对象)-

const filterTitles = ['He', 'Su']

所以最终结果应该是-

filteredData = [{ 'title': 'Hey',
'foo': 2,
'bar': 3
}, {
'title': 'Sup',
'foo': 3,
'bar': 4
}]

这是我做的-

filteredData = _.map(data, section => 
_.pick(section,val =>
_.some(filterTitles, title =>
_.startsWith(val, title)
)
)
);

这会过滤它,但只会返回一组这样的标题 -

filteredData = ['Hey', 'Sup']

如何获取过滤对象数组而不是过滤标题数组?顺便说一句,我正在使用 lodash 3.10

最佳答案

您可以使用 Array#filter() 执行此操作和 Array#includes()

var data = [{
'title': 'Hey',
'foo': 2,
'bar': 3
}, {
'title': 'Sup',
'foo': 3,
'bar': 4
}, {
'title': 'Remove',
'foo': 3,
'bar': 4
}]
const filterTitles = ['Hey', 'Sup'];

var result = data.filter(function(o) {
return filterTitles.includes(o.title);
});

console.log(result)

更新:要过滤标题以 filterTitles 数组中的元素开头的数组中的对象,您可以使用 filter()some()startsWith()

var data = [{
'title': 'Hey',
'foo': 2,
'bar': 3
}, {
'title': 'Sup',
'foo': 3,
'bar': 4
}, {
'title': 'Remove',
'foo': 3,
'bar': 4
}]
const filterTitles = ['He', 'Su']

var result = data.filter(function(o) {
return filterTitles.some(function(e) {
return o.title.startsWith(e);
})
});

console.log(result)

关于javascript - 使用 lodash 按键过滤嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232467/

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