在看似无穷无尽的array
中学习新语言的下一个noob问题。是的,我觉得我什么都不知道。是的,我知道这很容易。不,我自己无法弄明白。
我有一个我试图通过过滤器访问的数组。没有特别的原因,只是对其中一个免费编码网站的挑战:
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;
这将返回一个空数组。我感觉我没有正确访问每个alter
属性。我也有一种感觉,我需要一个循环遍历每个人的属性的循环。请帮忙,谢谢
答案 0 :(得分:2)
Set an argument to the filter function and use that in the return.
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);
答案 1 :(得分:1)
You need to add the parameter for the callback.
var alter = function(cand) {
// ^^^^
return cand.alter < 30;
}
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(cand){
return cand.alter < 30;
}
var filter = cand.filter(alter);
console.log(filter);
答案 2 :(得分:0)
filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
您需要传递参数作为所需的过滤功能。您也可以使用带有Arrow功能的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)}`);