gpt4 book ai didi

javascript - Underscore.js,测试整个数组是否在另一个数组中

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

这里是 Underscore.js 的一些新内容。我正在尝试通过测试 tags 数组中的所有项目是否都存在于对象的 tags 中来过滤对象数组。

像这样,使用 Underscore 的 filterevery 方法:

/* the set of data */
var colors = [
{
"id": "001",
"tags": ["color_family_white", "tone_warm", "room_study"]
},
{
"id": "002",
"tags": ["color_family_white", "tone_neutral"]
},
{
"id": "003",
"tags": ["color_family_red", "tone_bright", "room_kitchen"]
}
];

/* an example of white I might want to filter on */
var tags = ["color_family_white", "room_study"];

var results = _.filter(colors, function (color) {
return _.every(tags, function() { /* ??? what to do here */} );
});

所有标签都应出现在 color.tags 上。所以这应该只返回颜色 001。

这大致显示了我正在尝试做的事情:http://jsfiddle.net/tsargent/EtuS7/5/

最佳答案

使用 indexOf会工作:

var results = _.filter(colors, function (color) {
return _.every(tags, function(tag) { return _.indexOf(color.tags, tag) > -1; } );
});

或者内置的indexOf功能:

var results = _.filter(colors, function (color) {
return _.every(tags, function(tag) { return color.tags.indexOf(tag) > -1; } );
});

但为简洁起见,您也可以使用 difference功能:

var results = _.filter(colors, function (color) {
return _.difference(tags, color.tags).length === 0;
});

Demonstration

关于javascript - Underscore.js,测试整个数组是否在另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065886/

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