私は会社と国とのjsonファイルを持っています。オブジェクトを作成する最も正しい方法は何ですか。サイクルはすべての国を行き来します。その結果、オブジェクトを結果として取得するために、特定の国に関連する企業の数を計算する必要があります。次の形式です。ループ内にオブジェクトを作成する
country = {
USA: 13,
Germany: 11,
Belgia: 3
}
私は会社と国とのjsonファイルを持っています。オブジェクトを作成する最も正しい方法は何ですか。サイクルはすべての国を行き来します。その結果、オブジェクトを結果として取得するために、特定の国に関連する企業の数を計算する必要があります。次の形式です。ループ内にオブジェクトを作成する
country = {
USA: 13,
Germany: 11,
Belgia: 3
}
あなたはこのような何かを試すことができます(あなたが編集する前にあなたの質問に持っていたオブジェクトデータを使用した。)あなたはに
var jsondata = {"list":[{"name":"Photolist","location":{"name":"Poland","code":"PL"},"partners":[{"name":"Oloo","value":30},{"name":"Flashset","value":87}]},{"name":"Mymm","location":{"name":"Ukraine","code":"UA"},"partners":[{"name":"Photojam","value":57},{"name":"Divavu","value":82},{"name":"Quinu","value":18}]},{"name":"Yata","location":{"name":"United States","code":"US"},"partners":[{"name":"Meetz","value":72}]},{"name":"Brainbox","location":{"name":"Norway","code":"NO"},"partners":[{"name":"Divavu","value":42}]},{"name":"Flashpoint","location":{"name":"Sweden","code":"SE"},"partners":[{"name":"Babbleopia","value":53},{"name":"Buzzdog","value":70},{"name":"Voolia","value":20}]},{"name":"Photospace","location":{"name":"Poland","code":"PL"},"partners":[{"name":"Yakitri","value":81},{"name":"Divavu","value":85},{"name":"Skimia","value":12},{"name":"Meeveo","value":27}]},{"name":"Realfire","location":{"name":"Poland","code":"PL"},"partners":[{"name":"Topicshots","value":81}]}]};
var countries = {};
jsondata.list.forEach(function (elem) {
if (elem.location.name in countries) {
countries[elem.location.name]++;
} else {
countries[elem.location.name] = 1;
}
});
console.log(countries);
'reduce'の代わりに' map'を使った理由はありますか?私はこの問題が「減らす」ことにもっと役立つように感じます。 – christo8989
@ christo8989最初の考えでは、配列の新しい新しい値に値をマッピングしていましたが、考えようとすれば、すべての要素をループするだけではありません。 forEach。 – Ivar
勧めします0 jsonとArray.reduceを使用してオブジェクトを取得します。
var companies = JSON.parse(json).list; //<-- unsafe for production
var countries = companies.reduce(function(countries, company) {
var country = company.location.name;
if (typeof countries[country] === 'undefined' || countries[country] === null) {
countries[country] = 1;
} else {
countries[country]++;
}
return countries;
}, {});
'VAR国= {};'、次に国[COUNTRYNAME] =(国[COUNTRYNAME] || 0)+ 1 '用いてループ内のオブジェクトに国を追加する;' – 4castle
を使用して、例えば、JSONを追加でき?構造の理解のための最小量。それはのようです: '{{...}、...]'? – christo8989
ここにあるjsonファイルhttp://codeit.pro/frontTestTask/company/getList –