给定一个对象数组,任务是提取一个仅包含特定对象的不同值的新数组财产。例如,考虑以下数组:
var array = [ { "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 } ]
目标是从该数组中获取包含不同年龄的数组,从而产生:
[17, 35]
迭代解决方案
一种简单的方法是迭代数组中的对象并检查结果数组中是否存在每个对象的年龄。如果不是,则将年龄添加到结果数组中。这种方法虽然实用,但由于依赖多次迭代和比较,效率较低。
var distinct = [] for (var i = 0; i < array.length; i++) if (array[i].age not in distinct) distinct.push(array[i].age)
使用 ES6 Set 的优化解决方案
为了更高效的处理,ES6 /ES2015 提供了 Set 数据结构,可以存储唯一值。以下是如何利用它:
const data = [ { "group": 'A', "name": 'SD' }, { "group": 'B', "name": 'FI' }, { "group": 'A', "name": 'MM' }, { "group": 'B', "name": 'CO'} ]; const unique = [...new Set(data.map(item => item.group))]; // [ 'A', 'B']
通过将对象数组映射到其所需属性值的数组并从中创建一个 Set,我们消除了重复值。然后,使用扩展运算符 (...) 将 Set 转换回数组会产生所需的结果。
以上是如何有效地从 JavaScript 对象数组中提取唯一属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!