Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 按数组中的2个属性对相同对象进行计数,并引入计数属性_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

Javascript 按数组中的2个属性对相同对象进行计数,并引入计数属性

Javascript 按数组中的2个属性对相同对象进行计数,并引入计数属性,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,尝试对对象数组中的几个对象进行计数,以便检查两个属性,如果它们相同,则增加计数 编辑:基本上,我想检查itemId和orderId,如果数组中有另一个具有相同值的对象,我想增加计数 input => [{itemName: "Burger", itemId: 111, orderId: 123}, {itemName: "Burger", itemId: 111, orderId: 123}, {itemName: "Pizza&quo

尝试对对象数组中的几个对象进行计数,以便检查两个属性,如果它们相同,则增加计数

编辑:基本上,我想检查
itemId
orderId
,如果数组中有另一个具有相同值的对象,我想增加
计数

input =>
[{itemName: "Burger", itemId: 111, orderId: 123},
 {itemName: "Burger", itemId: 111, orderId: 123},
 {itemName: "Pizza",  itemId: 222, orderId: 456}]

output =>
[{itemName: "Burger", itemId: 111, orderId: 123, count: 2},
 {itemName: "Pizza",  itemId: 222, orderId: 456, count: 1}]
我尝试使用reduce函数和简单的forEach,但最接近的是:

counter = {}
myArray.forEach(function(obj) {
    var key = JSON.stringify(obj)
    counter[key] = (counter[key] || 0) + 1
})

result => 
[{itemName: "Burger", itemId: 111, orderId: 123}: 2,
 {itemName: "Pizza",  itemId: 222, orderId: 456}: 1 ]

我能在这方面得到一些帮助吗?

您可以使用
Object.values
Array.prototype.reduce的组合:

var input=[{itemName:“Burger”,itemId:111,orderId:123},
{itemName:“Burger”,itemId:111,orderId:123},
{itemName:“比萨饼”,itemId:222,orderId:456}];
var结果=对象.值(输入.减少((acc,i)=>{
var key=JSON.stringify(i)
返回{
…acc,
[key]:{…i,count:(acc[key]?.count | | 0)+1}
}
},{}));
console.log(结果)