Javascript 过滤器检查多个值吗?
2016-06-14
6718
我想知道如何从这样的数组中返回多个值:
var countries = [
{ key: "Spain", doc_count: 1378 },
{ key: "Greece", doc_count: 1259 }
];
这是我目前所设置的,它可以很好地返回单个值。我想知道如何传递一个国家数组,而不是寻找单个国家。
var countriesFound = countries.filter(function(country) {
return country.key === 'Spain';
});
关于这一点,我还想将找到的对象添加到数组的前面,这样我就可以在我的国家数组中拥有它的副本。
使用这种方法会产生一些意想不到的结果,因为我最终得到一个数组作为国家数组中的第一个项目,而我想要的对象存储在该数组中。
countries.unshift(countriesFound);
结果(至少我认为它看起来像这样输入的):
var countries = [
[{ key: "Spain", doc_count: 1378 }],
{ key: "Spain", doc_count: 1378 },
{ key: "Greece", doc_count: 1259 }
];
2个回答
将过滤器更改为:
var countriesFound = countries.filter(function(country) {
return ["Spain","Greece"].indexOf(country.key) != -1
});
其中
["Spain","Greece"]
是您想要过滤的有效国家/地区列表。应用于数组的过滤函数返回的值决定元素是否被过滤。
indexOf
查找给定数组中给定
country.key
的位置
根据
将过滤后的数组添加到另一个数组的开头
,您是正确的,在前面的代码之后执行
countries.unshift(countriesFound)
将实现这一点。
Juan Cortés
2016-06-14
与@Juan Corés 的答案相同,但使用箭头函数表达式:
const countriesFound = countries.filter(country =>
["Spain","Greece"].indexOf(country.key) != -1
);
Fellow Stranger
2018-02-06