Giả sử tôi có những điều sau đây:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
Cách tốt nhất để có thể có được một mảng của tất cả các độ tuổi khác nhau là gì để tôi có được một mảng kết quả:
[17, 35]
Có cách nào đó tôi có thể thay thế cấu trúc dữ liệu hoặc phương pháp tốt hơn để tôi không phải lặp lại qua từng mảng kiểm tra giá trị của "tuổi" và kiểm tra xem có tồn tại mảng khác không và thêm vào nếu không?
Nếu có cách nào đó tôi có thể rút ra những thời đại khác biệt mà không cần lặp lại ...
Cách không hiệu quả hiện tại tôi muốn cải thiện ... Nếu điều đó có nghĩa là thay vì "mảng" là một mảng các đối tượng, nhưng một "bản đồ" của các đối tượng với một khóa duy nhất (ví dụ "1,2,3") sẽ là cũng được Tôi chỉ tìm kiếm cách hiệu quả nhất.
Sau đây là cách tôi hiện đang làm, nhưng đối với tôi, việc lặp đi lặp lại dường như chỉ là hiệu quả cho dù nó hoạt động ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
đối tượng và map
s là lãng phí. Công việc này chỉ cần một .reduce()
giai đoạn đơn giản .