JavaScript 如何从对象数组中获取不重复的值
在本文中,我们将尝试通过一些示例来理解如何从JavaScript中的对象数组中获取不重复的值。
先决条件: JavaScript中的对象数组
示例:
Input:
[
{ name: "Ram", age: 17 },
{ name: "Shyam", age: 17 },
{ name: "Mohan", age: 30 },
]
Output: [17, 30]
解释:
- 从输入中,即对象数组中,选择可能包含重复值的任何键,无论是作为另一个对象的键还是作为对象本身的键。
- 从数组中不同对象的同一键中选择不同的值。
在理解了上面示例中所需的任务之后,让我们快速看一下以下方法,通过这些方法我们可以理解并解决上述任务。
- 使用 map() 和 filter() 方法
- 使用 Set() 构造函数
- 使用 map() 、 set() 和 from() 方法
方法1: 使用 map() 和 filter() 方法
- 在这种方法中,我们将使用多个函数,包括 map() 和 filter() 方法,这些方法都在我们的帮助方法中,参数是包含对象数组。
- 使用 map() 方法,我们将迭代对象数组,使用 filter() 方法将过滤掉不是重复值的值。
示例: 下面是上述方法的实现。
JavaScript
let employees_details = [
{ name: "Ram", age: 17 },
{ name: "Shyam", age: 17 },
{ name: "Mohan", age: 30 },
];
let desired_output = (employees_details) => {
let unique_values = employees_details
.map((item) => item.age)
.filter(
(value, index, current_value) => current_value.indexOf(value) === index
);
return unique_values;
};
console.log(desired_output(employees_details));
输出:
[ 17, 30 ]
方法2:
- 在这种方法中,我们将使用JavaScript中提供的Set()构造函数,它能帮助我们存储非重复的值。
- 存储非重复值后,我们将以数组的形式返回这些值作为输出。
示例: 下面是上述方法的实现。
Javascript
let employees_details = [
{ name: "Ram", age: 17 },
{ name: "Shyam", age: 17 },
{ name: "Mohan", age: 30 },
];
let desired_output = (employees_details) => {
let unique_values = [
...new Set(employees_details.map((element) => element.age)),
];
return unique_values;
};
console.log(desired_output(employees_details));
输出:
[ 17, 30 ]
方法3:使用 map()、set()和from() 方法
- 遍历数组并获取该属性的值。
- 使用 set() 存储这些值。
- 将 set() 转换为数组以获取唯一的值。
示例:
JavaScript
let employees_details = [
{ name: "Ram", age: 17 },
{ name: "Shyam", age: 17 },
{ name: "Mohan", age: 30 },
];
const propertyValues =
employees_details.map(obj => obj['name']);
const uniqueValuesSet =
new Set(propertyValues);
const distinctValues =
Array.from(uniqueValuesSet);
console.log(distinctValues);
输出
[ 'Ram', 'Shyam', 'Mohan' ]
极客教程