私は1000のオブジェクトがあるとします。今では、同じ名前のオブジェクトを配列に格納したいので、同じ名前のオブジェクトを持つ複数の配列を作成します。これはJavaScriptでどのように行うことができますか? データはJavaScriptでこの要素に基づいたJavaScriptのオブジェクトの配列
答えて
var input = [
{ name: 'ABC', age: 12 },
{ name: 'XYZ', age: 13 },
{ name: 'ABC', age: 14 },
{ name: 'XYZ', age: 15 },
];
var output = {};
input.forEach(function(obj) {
var array = output[obj.name];
if (!array) {
array = output[obj.name] = [];
}
array.push(obj)
})
for(name in output) {
console.log('There are ' + output[name].length + ' people named ' + name);
}
(あなたのコードをスニペットに変換できますか?) – evolutionxbox
あなたのために、何でも:) –
ようにすることができ、オブジェクトは、アレイにコピーされません。それらはメモリー内に存在し、配列に追加されると、そのオブジェクトへの参照は配列内に存在します。
次のコードでは、myObj === arr1[0] === arr2
です。これは次のことを意味することは事実である:
var myObj = {name:'Dave', age: 55};
var arr1 = [myObj];
var arr2 = [myObj];
arr2[0].age = 44;
console.log(myObj.age);
// prints 44
console.log(arr1[0].age);
// prints 44
だから、あなたが必要なものを得るために、あなただけの配列にデータを整理する必要があります。 JavaScriptでは、あなたは配列をフィルタリングすることができます。
// original data
var data = [
{name: 'ABC', age: 12},
{name: 'XYZ', age: 13},
{name: 'ABC', age: 14},
{name: 'XYZ', age: 15},
{name: 'XYZ', age: 16},
];
// this returns a function to be used in Array.filter to filter for objects with the specified name
function nameFilter(name) {
return function(datum) {
return datum.name === name;
}
}
// filter for each type
var abcPeople = data.filter(nameFilter('ABC'));
var xyzPeople = data.filter(nameFilter('XYZ'));
console.log(data.length);
//5
console.log(abcPeople.length);
//2
console.log(xyzPeople.length);
//3
あなたは上記のコードを実行した場合、あなたは3つの配列を持っているでしょうし、abcPeople
内のすべてのオブジェクトもdata
、そのようなものに変更がなることになりますもう一方に反映される。 xyzPeople
についても同様です。 filter
は新しい配列を作成するので、data
は変更されません。
UPDATE:リストは動的MaazKhan47 @
// original data
var data = [
{name: 'ABC', age: 12},
{name: 'XYZ', age: 13},
{name: 'ABC', age: 14},
{name: 'XYZ', age: 15},
{name: 'XYZ', age: 16},
];
var sortedData = {};
data.forEach(function(datum){
// initializes an array for any unseen name
if(!sortedData[datum.name]) {
sortedData[datum.name] = [];
}
// add the datum to the list for its name
sortedData[datum.name].push(datum);
});
// all names
console.log(Object.keys(sortedData));
// "ABC", "XYZ"
// items named "ABC"
console.log(sortedData['ABC']);
// [{"name": "ABC","age": 12}, {"name": "ABC","age": 14}]
ここで問題になるのは、私が非常に多くのタイプ(名前)を持つことができるということです。タイプ? – MaazKhan47
名前のリストがある場合は、それを反復処理できます。そうでない場合は、元のリストを反復して、そのようにオブジェクトを分割できます。あなたはその時点で配列のオブジェクトで終わるでしょう – pgreen2
- 1. オブジェクトの配列内の条件に基づいた角度の表示要素
- 2. JavaScript:フィルタ配列要素/オブジェクト
- 3. PHP:オブジェクト要素の条件に基づいて配列オブジェクト要素をプルしますか?
- 4. ページの高さと幅に基づいた配置要素
- 5. 引張要素は、インデックス配列に基づいて
- 6. 別のキー配列に基づいてオブジェクト配列をソート
- 7. プロパティ値に基づくオブジェクトのJavaScriptフィルタ配列
- 8. 次のオブジェクトに基づくフィルタ配列
- 9. オブジェクト内の配列に基づくオブジェクトの新しい配列ですか?
- 10. 属性に基づいたjavascriptでHTML要素を選択
- 11. R - 別の配列に基づいて文字列要素を連結する
- 12. Javascriptの配列 - 配列の要素
- 13. javascriptの要素の配列
- 14. JavaScriptのプロパティ値に基づいてオブジェクトの配列から選択します。
- 15. 配列要素に基づく更新マトリックス
- 16. インデックスに基づくJavaScriptマップ配列
- 17. 特定の要素に基づいて並べ替えの配列
- 18. 要素の配列に基づいてテーブルを動的に塗りつぶす
- 19. Cのキーに基づいて多次元配列から要素を削除
- 20. emberjsテンプレートのプロパティに基づいて配列要素を取得します
- 21. ピボットに基づいたパーティション配列
- 22. 配列要素に基づいてオブジェクトを検索し、一致する配列要素のみを返しますか?
- 23. 変数に基づいてオブジェクト配列を別の配列にソート
- 24. タイムスタンプに基づいてオブジェクトの配列をフィルタリングする方法
- 25. 最後に並べ替えられた要素を保持しないで、javascriptの別の配列に基づいて配列を並べ替え
- 26. 2次配列キーに基づくJavascript配列フィルタ
- 27. 他の行列に基づく行列要素の予測
- 28. Numpy、配列内の配列に基づく新しい配列
- 29. 1つの参照配列に基づいて要素を配列に追加および削除します
- 30. 曜日に基づいて要素クラスを変更するjavascript
を決定している例を追加しましたが、あなたはJSONオブジェクトを持っていますか?あなたは配列に格納したいですか? –
@BunkerBoyはいJsonオブジェクト – MaazKhan47