我想知道如何从这样的数组中返回多个值:
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 }
];
答案 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
);