Javascript 如何计算数组中的每个元素并为每个项创建键/值对象?

Javascript 如何计算数组中的每个元素并为每个项创建键/值对象?,javascript,arrays,Javascript,Arrays,假设我有一个数组,如下所示: 让myArray=[“丹尼斯”、“迈克”、“埃米莉”、“丹尼斯”、“约翰”、“乔纳森”、“温斯顿”、“梅丽莎”、“洛琳”、“托尼”、“芙里奥”、“约翰”、“迈克”、“约翰”] 我想计算此数组中的每个项目,并将它们放入如下数组: 让countedItems= [ {值:“丹尼斯”,计数:2}, {值:“迈克”,计数:2}, {值:“Emily”,计数:1}, {值:“丹尼斯”,计数:1}, {值:“约翰”,计数:3}, ... ] 有什么想法吗? 让myArray=

假设我有一个数组,如下所示:

让myArray=[“丹尼斯”、“迈克”、“埃米莉”、“丹尼斯”、“约翰”、“乔纳森”、“温斯顿”、“梅丽莎”、“洛琳”、“托尼”、“芙里奥”、“约翰”、“迈克”、“约翰”]

我想计算此数组中的每个项目,并将它们放入如下数组:

让countedItems=
[
{值:“丹尼斯”,计数:2},
{值:“迈克”,计数:2},
{值:“Emily”,计数:1},
{值:“丹尼斯”,计数:1},
{值:“约翰”,计数:3},
...
]
有什么想法吗?

让myArray=[“丹尼斯”、“迈克”、“埃米莉”、“丹尼斯”、“约翰”、“乔纳森”、“温斯顿”、“梅丽莎”、“洛琳”、“托尼”、“芙里奥”、“约翰”、“迈克”、“约翰”]
让countedItems=myArray.reduce((acc,cur)=>{
acc[cur]?acc[cur]。计数++:acc[cur]={
值:cur,
计数:1
};
返回acc;
}, {});
常量输出=对象值(countedItems);
控制台日志(输出)
让myArray=[“丹尼斯”、“迈克”、“埃米莉”、“丹尼斯”、“约翰”、“乔纳森”、“温斯顿”、“梅丽莎”、“洛琳”、“托尼”、“芙里奥”、“约翰”、“迈克”、“约翰”]
让countedItems=myArray.reduce((acc,cur)=>{
acc[cur]?acc[cur]。计数++:acc[cur]={
值:cur,
计数:1
};
返回acc;
}, {});
常量输出=对象值(countedItems);
控制台日志(输出)您可以使用以下功能:

    const arr = ["Dennis", "Mike", "Emily", "Dennis", "John", "Jonathan", "Winston", "Melissa", "Loraine", "Tony", "Furio", "John", "Mike", "John"]
    const result = arr.reduce((p,c)=> {
        const obj = p.filter(x=> x.value == c)[0];
        if(obj){
            obj.count +=1;
        } else {
            p.push({value:c,count:1})
        }
        return p;
    },[])
更新:

const result = Object.entries(
                 arr.reduce((p,c)=>{
                 p[c]=p[c]?p[c]+1:1;
                 return p},{})
               ).map(x=>({value:x[0],count:x[1]}))
您可以使用以下功能:

    const arr = ["Dennis", "Mike", "Emily", "Dennis", "John", "Jonathan", "Winston", "Melissa", "Loraine", "Tony", "Furio", "John", "Mike", "John"]
    const result = arr.reduce((p,c)=> {
        const obj = p.filter(x=> x.value == c)[0];
        if(obj){
            obj.count +=1;
        } else {
            p.push({value:c,count:1})
        }
        return p;
    },[])
更新:

const result = Object.entries(
                 arr.reduce((p,c)=>{
                 p[c]=p[c]?p[c]+1:1;
                 return p},{})
               ).map(x=>({value:x[0],count:x[1]}))
你可以用电脑来做

const myArray=[
“丹尼斯”,
“迈克”,
“艾米丽”,
“丹尼斯”,
“约翰”,
“乔纳森”,
“温斯顿”,
“梅丽莎”,
“罗兰”,
“托尼”,
“Furio”,
“约翰”,
“迈克”,
“约翰”,
];
常量映射=新映射();
myArray.forEach((x)=>{
如果(映射has(x)){
const obj=map.get(x);
对象计数+=1;
映射集(x,obj);
}set(x,{value:x,count:1});
});
常量ret=Array.from(map,([,y])=>y);
控制台日志(ret)您可以使用

const myArray=[
“丹尼斯”,
“迈克”,
“艾米丽”,
“丹尼斯”,
“约翰”,
“乔纳森”,
“温斯顿”,
“梅丽莎”,
“罗兰”,
“托尼”,
“Furio”,
“约翰”,
“迈克”,
“约翰”,
];
常量映射=新映射();
myArray.forEach((x)=>{
如果(映射has(x)){
const obj=map.get(x);
对象计数+=1;
映射集(x,obj);
}set(x,{value:x,count:1});
});
常量ret=Array.from(map,([,y])=>y);


控制台日志(ret)