Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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/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
Javascript 如何通过数组中的键计算相同对象的数量?_Javascript_Arrays_Sorting_Object_Javascript Objects - Fatal编程技术网

Javascript 如何通过数组中的键计算相同对象的数量?

Javascript 如何通过数组中的键计算相同对象的数量?,javascript,arrays,sorting,object,javascript-objects,Javascript,Arrays,Sorting,Object,Javascript Objects,我有一个对象数组: [ { appleID: 13, bananaID: 55 }, { appleID: 24, bananaID: 13}, { appleID: 97, bananaID: 13}, { appleID: 13, bananaID: 55 } ] 结果应该如下所示: [ { appleID: 13, bananaID: 55, count: 2 }, { appleID: 24, bananaID: 13, count: 1}, { app

我有一个对象数组:

[
  { appleID: 13, bananaID: 55 },
  { appleID: 24, bananaID: 13}, 
  { appleID: 97, bananaID: 13},
  { appleID: 13, bananaID: 55 }
]
结果应该如下所示:

[
  { appleID: 13, bananaID: 55, count: 2 },
  { appleID: 24, bananaID: 13, count: 1}, 
  { appleID: 97, bananaID: 13, count: 1}
]
element===appleID&&element==bananaID

计算相同元素的数量。您可以使用以下两项来聚合数据:

  • 关键思想是使用类似于
    const key=${appleID}-${bananaID}
  • 就性能而言,您可以使用
    对象
    来获得最高性能(Find just takes
    O(1)
    const数据=[
    {appleID:13,bananaID:55},
    {appleID:24,bananaID:13},
    {appleID:97,bananaID:13},
    {appleID:13,bananaID:55}
    ];
    const result=data.reduce((acc,{appleID,bananaID})=>{
    常量键=`${appleID}-${bananaID}`
    acc[key]??={appleID,bananaID,计数:0};
    acc[键][“计数”]+=1;
    返回acc;
    }, {});
    console.log(Object.values(result))
    
    const数据=[
    {appleID:13,bananaID:55},
    {appleID:24,bananaID:13},
    {appleID:97,bananaID:13},
    {appleID:13,bananaID:55}
    ]
    函数countNum(arr){
    返回arr.reduce((预处理,项目)=>{
    const hasItem=pre.find(subItem=>subItem.appleID===item.appleID&&subItem.bananaID===item.bananaID)
    如果(项目){
    hasItem.count++
    }否则{
    pre.push({…项,计数:1})
    }
    返回前
    }, [])
    }
    
    log(countNum(data))
    就性能而言,您的代码太慢了,兄弟。实际上,您可以使用
    object
    来获得最高的性能(Find just takes
    O(1)
    ),到目前为止您尝试了什么?你应该向我们展示你的代码你在尝试什么:)@Vladislav这能回答你的问题吗?如果您需要帮助,请告诉我:)