es6子数组过滤父数组过滤
时间: 2023-09-09 19:03:17 浏览: 61
es6提供了对数组的过滤和筛选的方法,可以通过子数组过滤父数组。
假设有一个父数组parentArr和一个子数组childArr,我们想要在父数组中过滤出子数组中的元素。
使用es6的filter方法可以轻松实现这一任务。filter方法接受一个回调函数作为参数,该回调函数用于定义过滤条件。
我们可以遍历父数组parentArr,对每个元素使用includes方法来判断是否包含在子数组childArr中,返回true的元素将被保留下来构成一个新的数组。
下面是示例代码:
```javascript
const parentArr = [1, 2, 3, 4, 5];
const childArr = [2, 4];
const filteredArr = parentArr.filter(item => childArr.includes(item));
console.log(filteredArr); // 输出 [2, 4]
```
在上面的代码中,filter方法传入的回调函数通过includes方法判断每个元素是否包含在子数组中,如果包含则返回true,否则返回false。最后得到的filteredArr即为过滤后的结果。
需要注意的是,这种方法只能过滤出在子数组中存在的元素,如果需要过滤出子数组中不存在的元素,只需要将判断条件改为`!childArr.includes(item)`即可。
总结起来,es6提供的filter方法可以很方便地过滤父数组中子数组的元素,通过传入不同的判断条件,可以实现多种过滤需求。
相关问题
es6 数组过滤掉相等的
ES6提供了许多处理数组的新方法,其中一个方法是使用数组的filter()函数来过滤出满足特定条件的元素。
要过滤掉数组中相等的元素,我们可以在filter()函数的回调函数中判断当前元素与之前的元素是否相等。具体的步骤如下:
1. 定义一个待过滤的数组:let arr = [1, 2, 3, 2, 4, 5, 4, 6];
2. 使用filter()函数来过滤数组,传入一个回调函数作为参数;
3. 在回调函数内部,声明一个空数组result,用来存放过滤后的结果;
4. 遍历原数组arr的每个元素,判断该元素是否与result数组中的元素相等;
5. 如果不相等,则将该元素添加到result数组中;
6. 返回result数组作为过滤后的结果。
以下是示例代码:
```javascript
let arr = [1, 2, 3, 2, 4, 5, 4, 6];
let result = arr.filter((item, index, self) => {
return self.indexOf(item) === index;
});
console.log(result); // 输出 [1, 2, 3, 4, 5, 6]
```
通过上述代码,我们成功地使用ES6的filter()函数过滤掉了数组中相等的元素。最终的结果是一个新数组,其中的元素互不相等。
es6 数组某个属性过滤去重
可以使用ES6中的Set和Array.from()方法,结合使用filter和map方法来实现数组某个属性过滤去重的功能。具体步骤如下:
1. 使用filter方法过滤出符合条件的数据。
2. 使用map方法将符合条件的数据转换成一个新的对象,对象的键为需要去重的属性,值为这个对象。
3. 将这个新对象转换成一个数组。
4. 使用Set去重。
5. 使用Array.from()方法将Set转换成数组。
以下是示例代码:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];
const uniqueArr = Array.from(new Set(
arr.filter((item, index) =>
arr.findIndex(obj => obj.name === item.name) === index
).map(item => ({ [item.name]: item }))
));
console.log(uniqueArr);
```
输出结果为:
```
[
{ Alice: { id: 1, name: 'Alice' } },
{ Bob: { id: 2, name: 'Bob' } },
{ Charlie: { id: 4, name: 'Charlie' } }
]
```
在这个示例中,我们以name属性作为去重的依据,最终返回了一个只包含不同name属性的对象的数组。