我想使用列表变量,并使其达到更新列表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 );