Vì vậy, tôi đang cố gắng tìm ra cách tạo một mảng kết hợp liệt kê các phần tử của một mảng và số lần mỗi phần tử xuất hiện mà không biết những yếu tố đó là gì trước.Cách đếm các phần tử trong một mảng, khi các phần tử không xác định
Như một ví dụ, giả sử tôi có một loạt các động vật: var animals = ['Rhino', 'Lion', 'Dog', 'Parrot', 'Parrot', 'Cat', 'Zebra', 'Rhino']
Tôi muốn tạo ra một đối tượng mà cuối cùng trông giống như:
{ 'Rhino': 2, 'Lion': 1, 'Dog': 1, 'Parrot': 2, 'Cat': 1, 'Zebra': 1 }
Nếu tôi biết những gì các con vật trong mảng là trước, tôi có thể tất nhiên làm một cái gì đó như:
var animalsCount = {};
var numberOfRhinos = animals.filter(function(animal) {
return animal == 'Rhino'
}).length;
animalsCount['Rhino'] = numberOfRhinos
để có được một đối tượng như tôi muốn. Vấn đề tất nhiên là điều này trở nên khá dài và lặp đi lặp lại tùy thuộc vào số lượng động vật. Đồng thời, nếu tôi không biết mỗi loại động vật thì tôi không thể tạo ra vật thể theo cách này. Phải có cách để làm điều này mà không biết thông tin đó, nhưng tôi bị kẹt.
Tất nhiên, sau đó một người nào đó "viết sai" 'constrictor' là' constructor' hoặc một cái gì đó và mọi thứ trở nên kỳ lạ. – user2357112
@ user2357112 Tôi cho rằng bạn đang đề cập đến việc xung đột các tên thuộc tính kế thừa như 'hasOwnProperty' và' toString'? Tôi đã thêm 'Object.create (null);' để giải quyết rằng –