如何在数组对象中提取符合条件的属性并去重
时间: 2024-01-27 07:12:36 浏览: 22
可以使用JavaScript中的高阶函数`filter()`和`map()`来实现这个功能。假设我们有一个包含多个对象的数组,每个对象都有一个属性`name`和一个属性`age`,我们需要提取所有年龄大于等于18岁的人的名字,并去重。
代码示例:
```javascript
const people = [
{ name: 'Alice', age: 20 },
{ name: 'Bob', age: 17 },
{ name: 'Charlie', age: 25 },
{ name: 'Alice', age: 18 },
{ name: 'David', age: 20 },
{ name: 'Charlie', age: 30 }
];
const uniqueNames = [...new Set(people.filter(person => person.age >= 18).map(person => person.name))];
console.log(uniqueNames); // ['Alice', 'Charlie', 'David']
```
首先使用`filter()`函数筛选出所有年龄大于等于18岁的人,然后使用`map()`函数将这些人的名字提取出来,最后使用ES6的扩展运算符和`Set`去重,得到符合条件的人的名字数组。
相关问题
写一个数组对象筛选符合条件,并去重的方法
好的,这里是一个示例的 JavaScript 代码,可以筛选符合条件并去重的数组对象:
```javascript
function filterAndDistinct(arr, key, value) {
// 首先使用 filter 方法筛选符合条件的对象
let filteredArr = arr.filter(obj => obj[key] === value);
// 然后使用 Set 对象去重
let distinctArr = [...new Set(filteredArr)];
// 最后返回去重后的数组对象
return distinctArr;
}
```
这个函数接受三个参数:一个数组对象 arr,一个键名 key,一个键值 value。它会使用 Array.prototype.filter() 方法筛选出符合条件的对象,然后使用 Set 对象去重,最后返回去重后的数组对象。
使用示例:
```javascript
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
{ id: 4, name: 'Bob' },
{ id: 5, name: 'David' },
{ id: 6, name: 'Alice' },
];
let filteredAndDistinctArr = filterAndDistinct(arr, 'name', 'Bob');
console.log(filteredAndDistinctArr);
// 输出:[{ id: 2, name: 'Bob' }]
```
这个示例会筛选出名字为 Bob 的对象,并去重,最终输出一个新的数组对象。
js 使用find修改数组对象中符合条件的属性
可以使用 `Array.prototype.find()` 方法找到符合条件的数组元素,然后对其属性进行修改。例如:
```javascript
const arr = [
{ id: 1, name: 'Alice', age: 20 },
{ id: 2, name: 'Bob', age: 25 },
{ id: 3, name: 'Charlie', age: 30 }
];
const target = arr.find(item => item.id === 2); // 找到 id 为 2 的元素
if (target) {
target.age = 26; // 修改 age 属性
}
console.log(arr);
// 输出:[
// { id: 1, name: 'Alice', age: 20 },
// { id: 2, name: 'Bob', age: 26 }, // age 属性已被修改
// { id: 3, name: 'Charlie', age: 30 }
// ]
```
在这个例子中,我们使用 `Array.prototype.find()` 方法找到 `id` 属性为 2 的数组元素,并将其赋值给 `target` 变量。然后,我们检查 `target` 是否存在,如果存在,则对其 `age` 属性进行修改。
需要注意的是,如果没有符合条件的元素,`Array.prototype.find()` 方法会返回 `undefined`,因此在进行属性修改前需要先检查 `target` 是否存在。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)