私は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. 配列に基づく3つ以上の要素のオートフィルタ
- 8. 配列要素に基づいてmongoDBドキュメントを照会する
- 9. 引張要素は、インデックス配列に基づいて
- 10. 別のキー配列に基づいてオブジェクト配列をソート
- 11. プロパティ値に基づくオブジェクトのJavaScriptフィルタ配列
- 12. 次のオブジェクトに基づくフィルタ配列
- 13. 属性に基づいたjavascriptでHTML要素を選択
- 14. オブジェクト内の配列に基づくオブジェクトの新しい配列ですか?
- 15. R - 別の配列に基づいて文字列要素を連結する
- 16. Javascriptの配列 - 配列の要素
- 17. javascriptの要素の配列
- 18. オブジェクトのプロパティに基づく配列と変数名の配列
- 19. JavaScriptのプロパティ値に基づいてオブジェクトの配列から選択します。
- 20. インデックスに基づくJavaScriptマップ配列
- 21. 配列要素に基づく更新マトリックス
- 22. 特定の要素に基づいて並べ替えの配列
- 23. 要素の配列に基づいてテーブルを動的に塗りつぶす
- 24. 左要素に基づいてオフセット付き右要素の配置方法
- 25. 値に基づいてソートされた配列オブジェクト
- 26. javascriptのグループ要素によるオブジェクトの配列からは
- 27. JSON前の要素に基づいて配列内の次の要素の値を取得するパス?
- 28. numpy配列のリストに基づいて要素を選択する方法は?
- 29. 要素の操作に基づいて配列を反復する
- 30. Cのキーに基づいて多次元配列から要素を削除
を決定している例を追加しましたが、あなたはJSONオブジェクトを持っていますか?あなたは配列に格納したいですか? –
@BunkerBoyはいJsonオブジェクト – MaazKhan47