filter() 返回空数组

HJW*_*HJW 6 javascript multidimensional-array

看似无穷无尽的下一个菜鸟问题 array的学习一门新语言中。是的,我确实觉得我什么都不知道。是的,我知道这非常容易。不,我自己无法弄清楚。

我有一个我试图通过过滤器访问的数组。没有特别的原因,只是对免费编码网站之一的挑战:

var cand = [
  {
    name: 'Kevin',
    alter: 19,
  },
  {
    name: 'Walter',
    alter: 22,
  },
  {
    name: 'Herbert',
    alter: 28,
  },
  {
    name: 'Kristin',
    alter: 31,
  },
  {
    name: 'Obergine',
    alter: 39,
  },
  {
    name: 'Hailey',
    alter: 44,
  }
];

var alter = function(){
  return cand.alter < 30;
}

var filter = cand.filter(alter);

filter;
Run Code Online (Sandbox Code Playgroud)

这将返回一个空数组。我有一种感觉,我没有alter正确访问每个属性。我也有一种感觉,我需要一个循环遍历每个人的属性。请帮忙,谢谢

Nar*_*hav 6

filter ()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

您需要传递一个参数作为过滤函数所需的参数。您还可以使用带有箭头功能的 ES6 过滤器。

箭头函数表达式语法比函数表达式更短,并且不绑定自己的 this、arguments、super 或 new.target。这些函数表达式最适合非方法函数,并且不能用作构造函数。

var cand = [{name: 'Kevin',alter: 19},{name: 'Walter',alter: 22},{name: 'Herbert',alter: 28},{name: 'Kristin',alter: 31},{name: 'Obergine',alter: 39},{name: 'Hailey',alter: 44}],
  alter = function(item){
    return item.alter < 30;
  },
  filter = cand.filter(alter);
//using normal javascript
console.log('Result Using normal filter javascript :-'+JSON.stringify(filter));

console.log('*************************');
//You can also you ES6 with arrow function

let filter1 = cand.filter(obj=> {return obj.alter<30});

console.log(`Result Using arrow function :- ${JSON.stringify(filter1)}`);
Run Code Online (Sandbox Code Playgroud)


Mou*_*ser 5

为过滤器函数设置一个参数并在返回中使用它。

var cand = [{name: 'Kevin',alter: 19,},{name: 'Walter',alter: 22,},{name: 'Herbert',alter: 28,},{    name: 'Kristin',alter: 31,},{name: 'Obergine',alter: 39,},{name: 'Hailey',alter: 44,}];

// add argument to the filter function | element
var alter = function(element) {
  return element.alter < 30; //use the argument here.
}

var filter = cand.filter(alter);

console.log(filter);
Run Code Online (Sandbox Code Playgroud)