Javascript过滤数组中的值
作者:互联网
我有一个数组数组,每个数组包含两个元素.如何通过过滤第一个元素从数组中返回第二个元素?
例如,我有以下数组,我的函数应该返回第一项为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);
解决方法:
您可以使用条件进行过滤,然后您只需要映射您想要的部分.
在单个循环中,只能使用Array#reduce
,因为在这里您可以操作结果集的值.
Array#filter
返回数组的原始项,而不更改任何内容.
The
filter()
method creates a new array with all elements that pass the test implemented by the provided function.
对于过滤,回调需要返回一个被解释为boolean的值,这意味着每个truthy值(如对象,数组或任何非零数字等)都会获取结果集的项.
如果你只想使用内部数组的一部分并且该部分是一个truty值,那么过滤可以工作,但它不会获取返回值,因为它不是为此而设的.
var array = [[8, 'first'], [8, 'second'], [1, 'empty'], [8, 'third'], [9, 'empty']],
result = array.filter(function(item){
return item[0] === 8;
}).
map(function (a) {
return a[1];
});
console.log(result);
标签:javascript,arrays,ecmascript-5 来源: https://codeday.me/bug/20190823/1698817.html