如何检查对象中的多个值?

时间:2017-03-08 12:23:31

标签: javascript

例如,您最多可以选择3个元素。每次选择元素时,它都存储在数组中。选择avar objects = ["a"];之后,选择bvar objects = ["a", "b"];

现在我的代码工作时没有在数组中查找对象,但我想让它像这样工作。

那么现在正在做什么它得到option元素并在数组中查找它。但每当你选择一个新的option时,我想挤压搜索列表。因此,如果在第一点上它现在只查找a选项,那么它会查找ab,其中{["a","b","c"]}{["a","c","b"]}{["c","b","a"]}等。

var filtered = s.Data.results.filter(function (el) {return el.result.indexOf(option) > -1});

3 个答案:

答案 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内置了一些内容,不带

https://lodash.com/docs/4.17.4#without