JavaScript ES6 - Bir nesne dizisindeki tekrarları saymak
Ürün listem için tüm üreticileri sayacak ve şöyle gösterecek bir filtre oluşturuyorum:
Elma (3)
Dizideki tekrarları kaldırdım: ["Apple","Apple","Apple"] Bu bağlantıyı kullandım:
Bir dizideki tüm benzersiz olmayan değerleri (yani: tekrar eden/ikinci veya daha fazla kez meydana gelen) alın
Ama benim sorunum, bu elemanları diziden saymak ve daha sonra üzerinde yineleme yapmam gerektiği için bir Nesneler Dizisi içinde göstermek istemem.
Yukarıdaki Bu Elmalar Dizisinden ihtiyacım olan sonuç: [{"Elma": 3},{...},{...}]
Bunu yapmaya çalışıyordum ama bana object döndürüyor ve ardından üzerinde yineleme yapamıyorum: JavaScript'te bir dizideki tekrar eden değeri nasıl sayabilirim
Bana bir Nesneler Dizisi lazım, tekrarlanmış değil
Angular 4 kullanıyorum.
Benim kodum:
component.ts
async ngOnInit() {
this.cart$ = await this.cartService.getCart();
this.subscription = this.productService.getAll().subscribe(products => {
this.category = products.filter(
products => products.category == this.name
);
this.filters();
});
}
filters() {
this.category2 = this.category.map(value => value.producer);
this.filteredArray = this.eliminateDuplicates(this.category2);
console.log(this.filteredArray);
}
eliminateDuplicates(arr) {
let i,
len = arr.length,
out = [],
obj = {};
for (i = 0; i < len; i++) {
obj[arr[i]] = 0;
}
for (i in obj) {
out.push(i);
}
return out;
}
component.html
<div *ngFor="let f of filteredArray">
{{f}}
</div>
Cevap #1
reduce'u diziyi özetlemek için ve map'i istenen çıktıyı oluşturmak için kullanabilirsiniz
let obj = ["Apple", "Apple", "Apple", "Orange"];
let result = Object.values(obj.reduce((c, v) => {
c[v] = c[v] || [v, 0];
c[v][1]++;
return c;
},{})).map(o=>({[o[0]] : o[1]}));
console.log(result);Cevap #2
İşte :
const array = ["a", "a", "b"]
const result = { }
for (let i = 0; i < array.length; i++) {
result[array[i]] = (result[array[i]] || 0) + 1
}
Object.keys(result).map(key => ({ [key]: result[key] }))
O son satır bunun anahtarıdır
Bunu yapmaya çalışıyordum ama bana nesneyi döndürüyor
