2016-08-12 16 views
-2

私はこれを理解するのに2時間の努力を続けてきましたが、私の質問に関連する記事をいくつか見つけましたが、私の状況では提案がうまくいかないようです。だから私はあなたが助けることを願っている。私は、オブジェクトの配列は、ここに50,000エントリでpersonArrayと呼ばれているJavaScriptのオブジェクトの配列をフィルタリングする

は、2つのサンプルエントリです:

[ 
    { sex: "Male", 
    lastName: "DIXON", 
    firstName: "Esteban", 
    age: 51, 
    isSingle: true 
    }, 
    { 
    sex: "Female", 
    lastName: "BULLOCK", 
    firstName: "Daniela", 
    age: 58, 
    isSingle: false 
    } 
] 

私はそのデータの中から有益な人口統計情報を取得できるようにしたいです。たとえば、ageが20との間に何個のMaleがあるか知りたいと思います。それ、どうやったら出来るの?

前述のように、私は他の関連する回答を読んだが、これではまったく新しいので、私の特定の状況にそれらを翻訳することができませんでした。私は単一のオブジェクト、または単一のオブジェクトのプロパティの単一の値を見つけるつもりはない。私は50 000のうち、上記のパラメータにどれだけ多くのエントリが適合しているかを調べたいと考えています。

+0

条件が満たされるたびにカウンタをインクリメントする 'for'ループを作成します。 – Barmar

+0

[配列にJavaScriptが含まれているかどうかをチェックするにはどうすればいいですか?](http://stackoverflow.com/questions/237104/how-do-i-check-if-an-array-includes-an- object-in-javascript) –

+0

@MikeMcCaughanこれはまったく同じようには見えません。特定のオブジェクトを検索するのではなく、いくつかの基準に一致するすべてのオブジェクトを数えたいとします。 – Barmar

答えて

2

機能アプローチ:

var count = input.filter(function(item) { 
    return item.sex == 'Male' && item.age > 19 && item.age < 25 && item.isSingle; 
}).length; 

命令型のアプローチ:

var count = 0; 
input.forEach(function(item) { 
    if (item.sex == 'Male' && item.age > 19 && item.age < 25 && item.isSingle) count++; 
}); 
1

使用Array.prototype.filter。詳細な情報はここにあります:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

var a = [{ 
    sex: "Male", 
    lastName: "DIXON", 
    firstName: "Esteban", 
    age: 51, 
    isSingle: true 
}, { 
    sex: "Male", 
    lastName: "DOE", 
    firstName: "John", 
    age: 21, 
    isSingle: true 
}, { 
    sex: "Female", 
    lastName: "BULLOCK", 
    firstName: "Daniela", 
    age: 58, 
    isSingle: false 
}]; 

a = a.filter(function(el) { 
    return el.sex === "Male" && el.age > 20 && el.age < 24 && el.isSingle === true; 
}); 

console.log(a); 
/* 
[ { sex: 'Male', 
    lastName: 'DOE', 
    firstName: 'John', 
    age: 21, 
    isSingle: true } ] 
*/ 
+1

私の基準に合ったエントリーを返さないようにしたいのですが、私の基準に合ったエントリーの数を知りたいのです。私は番号がほしい。また、提案された方法で元の配列データを破棄しますか? – neoflash