在 Angular 中显示具有重复出现次数的唯一项目
Show unique items with count of duplicate occurrences in Angular
我有如下对象数组:
var array =
[
{"name":"user1","value":1}
{"name":"user1","value":1}
{"name":"user1","value":1}
{"name":"user3","value":1}
{"name":"user3","value":1}
]
我想统计不同值出现的次数,输出应该是这样的
var array =
[
{"name":"user1","value":3}
{"name":"user3","value":2}
]
我试过这个:
array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {})
但输出不是我想要的:
{
"user1": 3,
"user3": 2
}
var array = [
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user3","value":1},
{"name":"user3","value":1}
]
var reduced = array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});
//Method 1
let result1 = [];
for (var prop in reduced) {
result1.push({name:prop,value:reduced[prop]});
}
console.log(result1)
//Method 2
var result2 = Object.keys(reduced).map(x => {
return {name : x, value : reduced[x]}})
console.log(result2)
尝试使用:
var array = [
{ name: "user1", value: 1 },
{ name: "user1", value: 1 },
{ name: "user1", value: 1 },
{ name: "user3", value: 1 },
{ name: "user3", value: 1 }
];
function removeDuplicate(arr) {
let thing = [];
arr.map(x => {
thing.push({
name: x.name,
value: array.filter(y => y.name == x.name).length
});
arr
.filter(y => y.name == x.name)
.map(y => {
array.splice(array.findIndex(z => z.name == y.name), 1);
});
});
return thing;
}
console.log(removeDuplicate(array));
您可以使用下面的代码,采用相同的代码,但使用 Object keys() 方法
进行了扩展
thingsWithDuplicates = [
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user3","value":1},
{"name":"user3","value":1}
];
distinctThings = thingsWithDuplicates.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});
values = [];
Object.keys(distinctThings).forEach(key => {
values.push({'name': key, 'value': distinctThings[key]})
});
console.log(values);
我有如下对象数组:
var array =
[
{"name":"user1","value":1}
{"name":"user1","value":1}
{"name":"user1","value":1}
{"name":"user3","value":1}
{"name":"user3","value":1}
]
我想统计不同值出现的次数,输出应该是这样的
var array =
[
{"name":"user1","value":3}
{"name":"user3","value":2}
]
我试过这个:
array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {})
但输出不是我想要的:
{
"user1": 3,
"user3": 2
}
var array = [
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user3","value":1},
{"name":"user3","value":1}
]
var reduced = array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});
//Method 1
let result1 = [];
for (var prop in reduced) {
result1.push({name:prop,value:reduced[prop]});
}
console.log(result1)
//Method 2
var result2 = Object.keys(reduced).map(x => {
return {name : x, value : reduced[x]}})
console.log(result2)
尝试使用:
var array = [
{ name: "user1", value: 1 },
{ name: "user1", value: 1 },
{ name: "user1", value: 1 },
{ name: "user3", value: 1 },
{ name: "user3", value: 1 }
];
function removeDuplicate(arr) {
let thing = [];
arr.map(x => {
thing.push({
name: x.name,
value: array.filter(y => y.name == x.name).length
});
arr
.filter(y => y.name == x.name)
.map(y => {
array.splice(array.findIndex(z => z.name == y.name), 1);
});
});
return thing;
}
console.log(removeDuplicate(array));
您可以使用下面的代码,采用相同的代码,但使用 Object keys() 方法
进行了扩展thingsWithDuplicates = [
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user1","value":1},
{"name":"user3","value":1},
{"name":"user3","value":1}
];
distinctThings = thingsWithDuplicates.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});
values = [];
Object.keys(distinctThings).forEach(key => {
values.push({'name': key, 'value': distinctThings[key]})
});
console.log(values);