2017-10-14 5 views
2

新しい言語を学んでいると思われる無限のarrayの次のnoob質問です。はい、私は何も知らないような気がします。はい、私はこれがメガ簡単であることを知っています。いいえ、私は自分でそれを理解することはできません。filter()は空の配列を返します

私はフィルターを介してアクセスしようとしている配列を持っています。特段の理由はない、自由なコーディングサイトの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, 
 
    } 
 
]; 
 

 
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

次に、 'name = filter.map(function(cand){return cand.name;});' –

0

filter()方法が提供する機能によって実現テストに合格するすべての要素を使用して新しい配列を作成します。

必要なフィルタ機能としてパラメータを渡す必要があります。 Arrow機能を備えたES6フィルターも使用できます。

矢印関数式の構文が関数式よりも短く、この引数、引数、スーパー、または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

関連する問題