javascript - 如何在 Javascript 对象数组中查找特定键的所有唯一值?

标签 javascript arrays javascript-objects

我有一个 javascript 对象数组,我正在尝试获取每个对象中特定属性的所有唯一值的数组。我尝试使用 reduce() 执行此操作,下面是我的示例代码,但它会导致错误“无法读取未定义的属性(读取‘includes’)”,即使我提供了一个空数组的初始值。预期的结果是一个数组

['New York', 'San Francisco', 'Chicago', 'Los Angeles']

最终目标是创建一个条形图,其中 X 轴为城市,Y 轴为每个城市的计算平均工资,因此我需要唯一的城市列表。有没有办法避免这个错误,或者有更好的方法来完全做到这一点?

const employees= [
 {id: 0, city: 'New York', wagePerHour: '15'}, 
 {id: 1, city: 'San Francisco', wagePerHour: '18'}, 
 {id: 2, city: 'New York', wagePerHour: '16'}, 
 {id: 3, city: 'Chicago', wagePerHour: '14'}, 
 {id: 4, city: 'Chicago', wagePerHour: '12'}, 
 {id: 5, city: 'San Francisco', wagePerHour: '15'}, 
 {id: 6, city: 'New York', wagePerHour: '18'}, 
 {id: 7, city: 'Los Angeles', wagePerHour: '10'}
];
const cities = employees.reduce((foundValues, nextEmployee) => {
 if(! foundValues.includes(nextEmployee.city)) {
  foundValues.push(nextEmployee.city);
 }
}, []);

最佳答案

一种更简单的方法是提取所有城市名称并使用 Set 函数构建一个唯一数组:

const employees = [{ id: 0, city: 'New York', wagePerHour: '15' }, { id: 1, city: 'San Francisco', wagePerHour: '18' }, { id: 2, city: 'New York', wagePerHour: '16' }, { id: 3, city: 'Chicago', wagePerHour: '14' }, {  id: 4, city: 'Chicago', wagePerHour: '12' }, { id: 5, city: 'San Francisco', wagePerHour: '15' }, {  id: 6, city: 'New York', wagePerHour: '18' }, { id: 7, city: 'Los Angeles', wagePerHour: '10' }]

let cities = [... new Set(employees.map(x=>x.city))];

console.log(cities);

关于javascript - 如何在 Javascript 对象数组中查找特定键的所有唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71740191/

相关文章:

JavaScript - 过滤嵌套数组

javascript - JSON.parse() 是如何工作的?

javascript - 在 NextJS 路由中的 slug 前面添加符号(例如@)

javascript - Jquery - 如何将来自输入的属性名称的文本添加到标签 attr 和该输入 ID?

JavaScript/CSS : set (firefox) zoom level of iframe?

javascript - 当您不知道 Google Apps 脚本中的名称时,JSON/JS 对象访问 key

javascript - 导出 Google Earth Engine 图像集合中的所有图像 (Google Earth Engine API)

javascript - 如果没有找到,搜索方法应该返回什么?

c# - 如何有效地交叉引用 2 个文本文件? |改进我的代码

arrays - Swift:从数组的结构中过滤字典键,这是可选的