作者:脸皮乃身外之物 | 来源:互联网 | 2023-01-13 16:04
我有一个数组数组,每个数组包含两个元素.如何通过过滤第一个元素从数组中返回第二个元素?
例如,我有以下数组,我的函数应该返回第一个项目所在的每个子数组的第二个元素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);
1> Nina Scholz..:
您可以使用条件进行过滤,然后您只需要映射您想要的部分.
在单个循环中,只能使用Array#reduce
,因为在这里您可以操作结果集的值.
Array#filter
返回数组的原始项,而不更改任何内容.
该filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素.
对于过滤,回调需要返回一个被解释为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);