Javascript过滤器检查多个值?

时间:2016-06-14 09:17:16

标签: javascript arrays

我想知道如何从这样的数组中返回多个值:

var countries = [
    { key: "Spain", doc_count: 1378 },
    { key: "Greece", doc_count: 1259 }
];

这是我到目前为止设置的,它可以返回单个值。我想知道如何通过一系列国家而不是寻找一个国家。

var countriesFound = countries.filter(function(country) {
    return country.key === 'Spain';
});

在那个注释中我还想将找到的对象添加到数组的前面,这样我就可以在我的countries数组中找到它的副本。

使用这会导致一些意想不到的结果,因为我最终得到一个数组作为countries数组中的第一个项目,我想要的对象存储在该数组中。

countries.unshift(countriesFound);

结果(至少我认为这看起来像这样):

var countries = [
    [{ key: "Spain", doc_count: 1378 }],
    { key: "Spain", doc_count: 1378 },
    { key: "Greece", doc_count: 1259 }
];

2 个答案:

答案 0 :(得分:4)

将过滤器更改为:

var countriesFound = countries.filter(function(country) {
    return ["Spain","Greece"].indexOf(country.key) != -1
});

["Spain","Greece"]是您要过滤的有效国家/地区列表。从应用于数组的过滤器函数返回的值确定元素是过滤还是过滤。 indexOf在给定数组country.key

中找到位置

根据将过滤后的数组添加到另一个的开头是正确的,在前面的代码实现之后执行countries.unshift(countriesFound)

答案 1 :(得分:1)

和@JuanCorés一样的答案,但是有着肥胖的箭头:

const countriesFound = countries.filter(country => 
    ["Spain","Greece"].indexOf(country.key) != -1
);