สมมติว่าฉันมีต่อไปนี้:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
เป็นวิธีที่ดีที่สุดที่จะได้รับอาร์เรย์ของทุกวัยที่แตกต่างกันเช่นที่ฉันได้รับผลของ:
[17, 35]
มีวิธีใดบ้างที่ฉันสามารถจัดโครงสร้างข้อมูลหรือวิธีที่ดีกว่าเพื่อที่ฉันจะได้ไม่ต้องวนซ้ำผ่านแต่ละอาร์เรย์เพื่อตรวจสอบค่าของ "อายุ" และตรวจสอบกับอาร์เรย์อื่นสำหรับการมีอยู่ของมันและเพิ่มถ้าไม่?
หากมีวิธีใดที่ฉันจะสามารถดึงอายุที่แตกต่างออกไปโดยไม่ทำซ้ำ ...
วิธีที่ไม่มีประสิทธิภาพในปัจจุบันฉันต้องการที่จะปรับปรุง ... ถ้ามันหมายความว่าแทนที่จะเป็น "อาร์เรย์" เป็นอาร์เรย์ของวัตถุ แต่เป็น "แผนที่" ของวัตถุที่มีคีย์เฉพาะบางอย่าง (เช่น "1,2,3") ที่จะเป็น ก็โอเคเช่นกัน ฉันแค่มองหาวิธีที่มีประสิทธิภาพสูงสุด
ต่อไปนี้เป็นวิธีที่ฉันทำในขณะนี้ แต่สำหรับฉันการทำซ้ำดูเหมือนจะเป็นเรื่องที่ยากสำหรับประสิทธิภาพแม้ว่ามันจะทำงานได้ ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
วัตถุและmap
s สิ้นเปลือง งานนี้ใช้.reduce()
ขั้นตอนง่าย ๆ