fiflter匹配某个数组对应的数组对象的id的数组对象及过滤前的下标
时间: 2024-10-15 07:21:09 浏览: 34
Javascript根据指定下标或对象删除数组元素
5星 · 资源好评率100%
在JavaScript中,如果你有一个数组的对象集合,比如`let arr = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 3, name: 'C' }]`,并且你想找到那些特定ID对应的对象及其索引,你可以使用`filter()`函数结合数组的`indexOf()`方法来实现。假设你想查找ID为2的对象以及它的索引:
```javascript
let idToFilter = 2;
let filteredObjects = arr.filter(item => item.id === idToFilter);
let indices = arr.findIndex((obj, index) => obj.id === idToFilter);
filteredObjects; // 返回:[{ id: 2, name: 'B' }]
indices; // 返回:1 (因为数组索引从0开始)
```
在这个例子中:
- `filter()`返回一个新的数组,包含所有`id`属性等于`idToFilter`的元素。
- `findIndex()`则返回`id`为`idToFilter`的第一个对象在原数组中的索引。
如果你想获取所有匹配的索引,可以稍微修改一下代码:
```javascript
let idToFilter = 2;
let matchedIndices = arr.reduce((acc, item, index) => {
if (item.id === idToFilter) acc.push(index);
return acc;
}, []);
matchedIndices; // 返回:[1]
```
这里我们使用了`reduce()`函数来创建一个新的数组,只收集匹配到ID的原始索引值。
阅读全文