我有一个数组数组,每个数组都包含两个元素。如何通过过滤第一个元素从数组中返回第二个元素?
例如,我有以下数组,我的函数应该从第一项为 8
的每个子数组返回第二个元素:
var array = [[8, 'first'], [8, 'second'], [1, 'empty'], [8, 'third'], [9, 'empty']];
预期结果: ['first', 'second', 'third']
这是我到目前为止实现的,但它返回两个元素而不是每个数组中匹配的第二个元素……
var array = [[8, 'first'], [8, 'second'], [1, 'empty'], [8, 'third'], [9, 'empty']];
var result = array.filter(function(item){
if(item[0] == 8) {
return item[1];
}
});
console.log(result);
原文由 Valip 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以根据条件进行过滤,然后只需要映射您想要的部分。
在单个循环中,只能使用
Array#reduce
,因为在这里您可以操作结果集的值。Array#filter
返回数组的原始项,不做任何更改。对于过滤,回调需要返回一个被解释为布尔值的值,这意味着每个真值(如对象、数组或任何非零数字等)都将项目作为结果集。
如果您只想使用内部数组的一部分并且该部分是真实值,则过滤有效,但它不会获取返回值,因为它不是为此而设计的。