3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個贊
您的方法意味著在-loop.indexOf()
的每次迭代中循環(huán)您的源數(shù)組(使用)。for(..
這將減慢不必要的查找過程。
相反,您可以使用Array.prototype.reduce()
遍歷源數(shù)組并構(gòu)建 ,將Map
所需Category
格式的鍵和對象作為值,然后提取Map.prototype.values()
到結(jié)果數(shù)組中。
這將執(zhí)行得更快并且擴(kuò)展性更好。
const src = [{App:"testa.com",Name:"TEST A",Category:"HR",Employees:7},{App:"testd.com",Name:"TEST D",Category:"DevOps",Employees:7},{App:"teste.com",Name:"TEST E",Category:"DevOps",Employees:7},{App:"testf.com",Name:"TEST F",Category:"Business",Employees:7}],
result = [...src
.reduce((r, {Category}) => {
const cat = r.get(Category)
cat ? cat.count ++ : r.set(Category, {Category, count: 1})
return r
}, new Map)
.values()
]
console.log(result)
.as-console-wrapper{min-height:100%;}

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個贊
最簡單的方法是使用Array.prototype.reduce
const arr = [ ... ];
const output = arr.reduce((result, obj) => {
if (!result[obj.category]) {
result[obj.category] = 0;
}
result[obj.category]++;
return result;
}, {});
console.log(output); // this should log the similar output you want

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個贊
.map這是使用and的另一種選擇Set:
const src = [
{
App: "testa.com",
Name: "TEST A",
Category: "HR",
Employees: 7
},
{
App: "testd.com",
Name: "TEST D",
Category: "DevOps",
Employees: 7
},
{
App: "teste.com",
Name: "TEST E",
Category: "DevOps",
Employees: 7
},
{
App: "testf.com",
Name: "TEST F",
Category: "Business",
Employees: 7
}
];
const categories = src.map(obj => obj.Category);
const distinctCategories = [...new Set(categories)];
console.log(distinctCategories.length);
添加回答
舉報(bào)