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

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

假设我有以下情况:

var array = 
    [
        {"name":"Joe", "age":17}, 
        {"name":"Bob", "age":17}, 
        {"name":"Carl", "age": 35}
    ]

获得所有不同年龄的数组的最佳方法是什么,这样我就可以得到一个结果数组:

[17, 35]

我是否可以选择构造数据或更好的方法,使我不必迭代每个数组,检查“age”的值,并检查是否存在另一个数组,如果没有,则添加它?

如果有什么办法的话,我就可以把不同的年龄拉出来而不用迭代.

目前我想改进的方法是无效的.如果它的意思不是“数组”是一个对象数组,而是一个具有某些唯一键(即“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)


繁星点点滴滴
浏览 513回答 3
3回答

郎朗坤

如果这是PHP,我会用键构建一个数组,然后array_keys最后,但JS没有这样的奢侈。相反,尝试如下:var&nbsp;flags&nbsp;=&nbsp;[],&nbsp;output&nbsp;=&nbsp;[],&nbsp;l&nbsp;=&nbsp;array.length,&nbsp;i;for(&nbsp;i=0;&nbsp;i<l;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;flags[array[i].age])&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;flags[array[i].age]&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;output.push(array[i].age);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript