如果数组中存在重复值,请增加对象的count属性



我想使用列表变量,并使其达到更新列表

const list = [{name:'apple'},{name:'apple'},{name:'banana'}];
const updatedList = [{name:'apple', count:2},{name:'banana', count: 1}];

也许这个例子会对你有所帮助?

const list = [{name:'apple'},{name:'apple'},{name:'banana'}];
const updatedList = Object.values(list.reduce(
(map, el) => {
map[el.name] ? map[el.name].count++ : map[el.name] = { ...el,
count: 1
};
return map;
}, {}
));
console.log(updatedList);

function uptadeLi(list,item,quant) {
// body...
for( i in list){
if (list[i].name === item){
list[i].count = quant
}
}
}

使用该功能,您可以设置列表中的每个元素,确保将项目名称设置为字符串

const list = [{name:'apple'},{name:'apple'},{name:'banana'}];
const res = list.reduce((sub,value)=>{
const index= sub.findIndex(i => i.name===value.name)
if(index !==-1)
sub[index].count++
else
sub.push({name:value.name,count:1})
return sub
},[])
console.log(res)

使用.reduce()方法评估每个项目在具有唯一键的对象中的计数:

{ "apple": 2, "banana": 1 }

然后使用Object.entries()将其转换为以下数组:

[ ["apple", 2], ["banana", 1] ]

最后,使用.map()方法生成:

[ {"name": "apple", "count": 2}, {"name": "banana", "count": 1} ]

演示

const list = [{name:'apple'},{name:'apple'},{name:'banana'}];
const updatedList = Object.entries(
list.reduce(
(acc,cur) => ({...acc,[cur.name]:(acc[cur.name] || 0) + 1}), 
{})
)
.map(([name,count]) => ({name,count}));
console.log( updatedList );

最新更新