如何从JavaScript中的对象数组中获取不同的值?

假设我有以下:

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)
最佳答案
如果这是PHP我将构建一个数组与键,并采取array_keys在结束,但JS没有这样的奢侈。相反,请尝试:

var flags = [], output = [], l = array.length, i;
for( i=0; i<l; i++) {
    if( flags[array[i].age]) continue;
    flags[array[i].age] = true;
    output.push(array[i].age);
}

转载注明原文:如何从JavaScript中的对象数组中获取不同的值? - 代码日志