考虑一个对象数组,其中每个对象代表一个具有姓名和年龄的个体:
var array = [ { "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 } ];
任务是从该数组中提取不同的年龄,从而产生一个具有唯一的新数组值:
[17, 35]
ES6 引入了 Set 数据结构,它自动维护唯一值的集合。这可用于有效地提取不同的年龄:
const distinctAges = [...new Set(array.map(object => object.age))];
此方法创建一个新数组,其中仅包含原始数组中每个对象的年龄属性中存在的唯一值。
如果性能至关重要,您可以考虑替代数据结构,例如地图或object:
const ageMap = {}; array.forEach(object => { ageMap[object.age] = true; }); const distinctAges = Object.keys(ageMap).map(Number);
在这种情况下,年龄值作为键存储在对象(地图)中。 Object.keys() 方法以数组形式检索唯一键(年龄值),然后使用 map(Number) 将其转换为数值。
初始迭代方法可以通过使用includes()方法检查重复值来改进问题中提出的问题:
var distinct = []; for (var i = 0; i < array.length; i++) { if (!distinct.includes(array[i].age)) { distinct.push(array[i].age); } }
此优化通过避免多个值来减少所需的比较次数检查重复的年龄。
以上是如何从 JavaScript 中的对象数组中提取唯一年龄?的详细内容。更多信息请关注PHP中文网其他相关文章!