Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript对象按属性分组并推到新对象_Javascript_Arrays_Handlebars.js_Javascript Objects - Fatal编程技术网

JavaScript对象按属性分组并推到新对象

JavaScript对象按属性分组并推到新对象,javascript,arrays,handlebars.js,javascript-objects,Javascript,Arrays,Handlebars.js,Javascript Objects,我需要帮助读取对象、按名称分组和计算每次出现的次数 然后,我需要将结果推送到另一个对象中,我可以使用手柄进行迭代 以下是我的示例对象: var names = [ { "name": "Person A" }, { "name": "Person B" }, { "name": "Person C" }, { "name": "Person D" }, { "name": "Person B" }, { "name": "Person C" }, { "name": "Person B" }

我需要帮助读取对象、按名称分组和计算每次出现的次数

然后,我需要将结果推送到另一个对象中,我可以使用手柄进行迭代

以下是我的示例对象:

var names = [ 
{ "name": "Person A" },
{ "name": "Person B" },
{ "name": "Person C" },
{ "name": "Person D" },
{ "name": "Person B" },
{ "name": "Person C" },
{ "name": "Person B" }
];
我找到了一些代码,可以循环使用,并汇总名称:

        for(var i = 0; i < names.length; i++) {

            if(!count[names[i].name]){
                count[names[i].name] = 0;                    
            }
            count[names[i].name]++;
        }    
for(变量i=0;i
这给了我以下信息:

我需要将这些结果推送到一个新的对象中,以便车把阅读。因此,我需要数据采用以下格式:

到目前为止,我一直在努力将数据作为新项目推送到响应对象中。我不知道如何从count对象检索名称和总数

// Set up the data to be returned
var names = [ 
{ "name": "Person A" },
{ "name": "Person B" },
{ "name": "Person C" },
{ "name": "Person D" },
{ "name": "Person B" },
{ "name": "Person C" },
{ "name": "Person B" }
];
var count = {};
var response = { items:[] };



        for(var i = 0; i < names.length; i++) {

            if(!count[names[i].name]){
                count[names[i].name] = 0;                    
            }
            count[names[i].name]++;
        }             


// Loop through the count object and populate response items
for(var key in count) {

    response.items.push({
            // How do i put the name and total here?
            "name": "Person A",
            "total": 12345
    });
}


console.log(count);
console.log(response);
//设置要返回的数据
变量名称=[
{“姓名”:“人A”},
{“姓名”:“人B”},
{“姓名”:“个人C”},
{“姓名”:“人D”},
{“姓名”:“人B”},
{“姓名”:“个人C”},
{“姓名”:“个人B”}
];
变量计数={};
var响应={items:[]};
对于(var i=0;i
这是您所期望的吗

for (var key in count) {
    response.items.push({
        "name": key,
        "total": count[key]
    });
}
您可以这样做: 使用
forin
循环,如下所示。
var名称=[{
“姓名”:“个人A”
},
{
“姓名”:“B人”
},
{
“姓名”:“C人”
},
{
“姓名”:“D人”
},
{
“姓名”:“B人”
},
{
“姓名”:“C人”
},
{
“姓名”:“B人”
}
];
变量计数={};
对于(var i=0;i
const name=[
{“姓名”:“人A”},
{“姓名”:“人B”},
{“姓名”:“个人C”},
{“姓名”:“人D”},
{“姓名”:“人B”},
{“姓名”:“个人C”},
{“姓名”:“个人B”}
]
常量计数=名称。减少((计数,项目)=>(
计数[项目名称]
?计数[项目名称]++
:计数[项目名称]=1
,计数)
, {})
const result=Array.from(Object.keys(count),(key)=>({name:key,total:count[key]}))
console.log(结果)