编程语言
首页 > 编程语言> > Javascript过滤数组中的值

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