假设我有以下内容:
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 没有这样的奢侈。相反,试试这个:
array_keys
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); }