Isa*_*eur 1 javascript arrays counter for-loop object
可以说我有一个带有不同键的对象列表,其中之一是name。
var resulttemp = [{name: "HYD. CYLINDER"}, {name: "pelle"}, {name: "HYD. CYLINDER"}, {name: "1212"}, {name: "pelle"}]
最终结果应为:
var uniquePartNamesWithCount = [{name: "HYD. CYLINDER", count: 2}, {name: "pelle", count: 2}, {name: "1212", count: 1}]
我知道如何将唯一名称推入数组,但是如何添加计数器?
一种解决方案是使用Array.reduce()生成一个对象,该对象将保存每个名称以及与之相关的计数器。最后,您可以使用Object.values()获得所需的数组。
var input = [
  {name: "HYD. CYLINDER"},
  {name: "pelle"},
  {name: "HYD. CYLINDER"},
  {name: "1212"},
  {name: "pelle"}
];
let res = input.reduce((acc, {name}) =>
{
    acc[name] = acc[name] || ({name, count: 0});
    acc[name].count++;
    return acc;    
}, {});
console.log(Object.values(res));.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}如果您需要按计数器排序的最终数组,则可以执行以下操作:
console.log( Object.values(res).sort((a, b) => b.count - a.count) );