js 一个由有id,name属性的对象组成的数组,过滤掉其中name值一样的对象
时间: 2024-02-13 08:00:47 浏览: 90
可以使用Array.filter()和Array.findIndex()方法来实现该功能。具体实现步骤如下:
1. 使用Array.filter()方法过滤数组,返回一个新的数组,其中包含满足过滤条件的元素。
2. 在Array.filter()方法中使用Array.findIndex()方法查找当前元素在原数组中的位置,如果找到的位置不等于当前元素的索引,则说明该元素已经在之前出现过,需要过滤掉。
下面是示例代码:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'David' },
{ id: 5, name: 'Bob' },
];
const filteredArr = arr.filter((item, index, self) => {
return index === self.findIndex((t) => t.name === item.name);
});
console.log(filteredArr);
// [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 4, name: 'David' }]
```
在上面的代码中,使用了箭头函数和模板字符串来简化代码,如果不熟悉这些语法,可以参考相关文档进行学习。
相关问题
js 中对一个对象数组过滤, 过滤条件是每一个对象的某个属性值在不在另外一个数组对象中
在JavaScript中,如果你有一个对象数组,并想要基于每个对象的特定属性值来过滤,你可以结合 `Array.prototype.filter()` 方法和数组的 `includes()` 方法来实现。假设你有一个对象数组 `objArray` 和一个用于比较的属性名 `propName`,以及另一个数组 `excludeArray`,你可以这样做:
```javascript
function filterObjects(objArray, propName, excludeArray) {
return objArray.filter(obj => {
const value = obj[propName]; // 获取当前对象的指定属性值
return excludeArray.indexOf(value) === -1; // 判断属性值是否不在排除数组中
});
}
// 示例
const objArray = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 3, name: 'C' },
{ id: 4, name: 'D' },
];
const excludeArray = ['B', 'D'];
const filteredArray = filterObjects(objArray, 'name', excludeArray);
console.log(filteredArray); // 输出:[ { id: 1, name: 'A' }, { id: 3, name: 'C' } ]
```
这个 `filterObjects` 函数会返回一个新的对象数组,其中只包含那些其指定属性 `propName` 的值不在 `excludeArray` 中的对象。
js 根据数组过滤出数组对象的一个属性
可以使用 Array.prototype.map() 和 Array.prototype.filter() 方法来实现。具体代码如下:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
];
const filteredNames = arr
.filter(item => item.id % 2 === 0) // 过滤出 id 为偶数的对象
.map(item => item.name); // 取出每个对象的 name 属性
console.log(filteredNames); // 输出 ["Bob"]
```
这段代码会输出一个数组,其中包含了 id 为偶数的对象的 name 属性。在这个例子中,我们使用了 filter() 方法来过滤出 id 为偶数的对象,然后使用 map() 方法来取出每个对象的 name 属性。
阅读全文