Isa*_*eur 1 javascript arrays counter for-loop object
可以说我有一个带有不同键的对象列表,其中之一是name。
var resulttemp = [{name: "HYD. CYLINDER"}, {name: "pelle"}, {name: "HYD. CYLINDER"}, {name: "1212"}, {name: "pelle"}]
Run Code Online (Sandbox Code Playgroud)
最终结果应为:
var uniquePartNamesWithCount = [{name: "HYD. CYLINDER", count: 2}, {name: "pelle", count: 2}, {name: "1212", count: 1}]
Run Code Online (Sandbox Code Playgroud)
我知道如何将唯一名称推入数组,但是如何添加计数器?
一种解决方案是使用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));Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}Run Code Online (Sandbox Code Playgroud)
如果您需要按计数器排序的最终数组,则可以执行以下操作:
console.log( Object.values(res).sort((a, b) => b.count - a.count) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |