2017-10-14 54 views
2

在看似無盡的array中學習一種新語言的下一個noob問題。是的,我覺得我什麼都不知道。是的,我知道這很容易。不,我自己弄不清楚。filter()返回空數組

我有一個數組,我試圖通過過濾器訪問。沒有特別的理由,只是在自由編碼的一個網站是一個挑戰:

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屬性。我也有一種感覺,我需要一個循環遍歷每個人的屬性。請幫忙,謝謝

+2

'cand'是完整的陣列,並且沒有屬性'alter'。數組中的對象做 – charlietfl

回答

1

設置一個參數給過濾器函數並在返回中使用它。

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

您需要添加參數回調。

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);

+0

然後我該如何顯示年齡,或者只顯示新陣列中的名稱? – Helle

+0

然後你可以映射屬性,比如'names = filter.map(function(cand){return cand.name;});' –

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)}`);

+0

把JSON帶入遊戲有什麼意義?不是真的看上它,是否有直接的好處? – Helle