例如,您最多可以选择3个元素。每次选择元素时,它都存储在数组中。选择a
和var objects = ["a"];
之后,选择b
和var objects = ["a", "b"]
;
现在我的代码工作时没有在数组中查找对象,但我想让它像这样工作。
那么现在正在做什么它得到option
元素并在数组中查找它。但每当你选择一个新的option
时,我想挤压搜索列表。因此,如果在第一点上它现在只查找a
选项,那么它会查找a
和b
,其中{["a","b","c"]}
或{["a","c","b"]}
或{["c","b","a"]}
等。
var filtered = s.Data.results.filter(function (el) {return el.result.indexOf(option) > -1});
答案 0 :(得分:2)
你可以过滤结果数组,检查options
的每个元素,如果它在结果的内部数组中。
var results = [["a", "c", "b"], ["a", "c", "b"], ["b", "c", "d"], ["b", "c", "e"]],
option = ["a", "b"],
filtered = results.filter(function (a) {
return option.every(function (b) {
return a.indexOf(b) !== -1;
});
});
console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
我不完全确定你问的是什么,但听起来你想通过一系列选项过滤你的结果数组?像这样:
var options = ["a", "b"];
var results = ["c", "b", "a"];
var filtered = results.filter(result => options.indexOf(result) !== -1);
答案 2 :(得分:0)
您需要缩小选项列表以删除不需要的项目。我没有
reducedOptions = s.Data.results.reduce((acc, curr) => {
if (el.result.indexOf(curr) > -1) {
acc.push(curr)
}
return acc;
}, [])
此外,lodash内置了一些内容,不带