Javascript 在循环中创建对象

Javascript 在循环中创建对象,javascript,Javascript,我有一个公司和国家的json文件。创建对象的最正确方法是什么。该循环会经过所有国家,我必须计算与特定国家相关的公司数量,以获得对象,结果大致如下: country = { USA: 13, Germany: 11, Belgia: 3 } 您可以这样做:(使用编辑前问题中的对象数据) var jsondata={“list”:[{“name”:“Photolist”,“location”:{“name”:“Poland”,“code”:“PL”},“partners”:[

我有一个公司和国家的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”:“UA”},“partners”:[{“name”:“Photojam”,“value”:57},{“name”:“Divavu”,“value”:82},{“name”:“Quinu{“名称”:“美国”,“代码”:“美国”},“合作伙伴”:[{“名称”:“米兹”,“价值”:72}],{“名称”:“脑盒”,“地点”:“{“名称”:“挪威”,“代码”:“否”},“合作伙伴”:[{“名称”:“迪瓦夫”,“价值”:42},{“名称”:“闪点”,“地点”:{“名称”:“瑞典”,“代码”:“SE”},“合作伙伴”:[{“名称”:“巴布卢皮亚”,“价值”:53},{“名称”:“Buzzdog”,“价值”:70},{“名称”:“沃奥利亚”,“价值”:20},{“名称”:“Photospace”,“location”:{“名称”:“波兰”,“代码”:“PL”},“合作伙伴”:[{“名称”:“Yakitri”,“值”:81},{“名称”:“Divavu”,“值”:85},{“名称”:“Skimia”,“值”:12},{“名称”:“Meeveo”,“值”:27},{“名称”:“Realfire”,“位置”:{“名称”:“波兰”,“代码”:“PL”},“合作伙伴”:[{“名称”:“Topicshots”,“值”:81}]};
var国家={};
jsondata.list.forEach(函数(elem){
if(elem.location.name在国家/地区){
国家[元素位置名称]+;
}否则{
国家[元素位置名称]=1;
}
});

console.log(countries);
您可以这样尝试:(使用编辑前问题中的对象数据)

var jsondata={“list”:[{“name”:“Photolist”,“location”:{“name”:“Poland”,“code”:“PL”},“partners”:[{“name”:“Oloo”,“value”:30},{“name”:“Flashset”,“value”:87}]},{“name”:“Mymm”,“location”:{“name”:“UA”},“partners”:[{“name”:“Photojam”,“value”:57},{“name”:“Divavu”,“value”:82},{“name”:“Quinu名称:““美国”,“代码:”:“美国”},“合作伙伴:“{“名称:”:“米兹”,“价值”:72}},{“名称:”,“地点:“{”名称:““挪威”,“代码:”:“否”},“合作伙伴:“{”名称:“{”名称:“:“迪瓦夫”,“价值”:42},{”名称:“:“闪点”,“地点:{”名称:“:“瑞典”,“代码:”,“SE},“合作伙伴:“{”名称:“:“Babbleopia”,“价值”:53},{”名称:“:“Buzzdog”,“价值”:70},{名称“:“Photospace”,“location”:{“name”:“Poland”,“code”:“PL”},“partners”:[{“name”:“Yakitri”,“value”:81},{“name”:“Divavu”,“value”:85},{“name”:“skilia”,“value”:12},{“name”:“Meeveo”,“value”:27},{“name”:“Realfire”,“location”:{“name”:“Poland”,“code”:“PL”},“partners”:[{“name”:“name”:“Topicshots”,“value”:81}]};
var国家={};
jsondata.list.forEach(函数(elem){
if(elem.location.name在国家/地区){
国家[元素位置名称]+;
}否则{
国家[元素位置名称]=1;
}
});
console.log(countries);
您将需要使用json并获取您的对象

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 companys=JSON.parse(JSON.list);//您将需要使用JSON并获取您的对象

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 companys=JSON.parse(JSON).list;//
var country={};
然后使用
country[countryName]=(country[countryName]| | 0)+1;将国家添加到循环内的对象中;
您可以添加示例JSON吗?这是我们理解该结构所需的最小数量。它像:
[{…},…]
?json文件您可以在这里找到
var country={};
,然后使用
country[countryName]=(country[countryName]| | 0)+1;将国家添加到循环内的对象中;
您可以添加示例json吗?我们理解该结构的最小数量。它像:
[{…},]
?您可以在这里找到json文件您为什么使用
map
而不是
reduce
?我觉得这个问题更适合
reduce
@christo8989最初的想法是我将值映射到数组中的一个新值,但现在想想看,它除了循环之外没有做更多的事情我只是把它改成了forEach。你为什么用
map
而不是
reduce
?我觉得这个问题更适合
reduce
@christo8989最初的想法是我把值映射到数组中的一个新值,但现在想起来,它没什么用不仅仅是在每个元素上循环…我只是把它改成了forEach。