在Angular 6中,可以使用以下几种方法从数组列表中查找重复项:
filter
和indexOf
方法:可以创建一个过滤函数,循环遍历数组中的每个元素,利用indexOf
方法判断该元素是否在数组中的当前索引位置之前已经存在过。如果存在,则认为是重复项。以下是示例代码:const arr = [1, 2, 3, 4, 1, 5, 2];
const duplicates = arr.filter((item, index) => arr.indexOf(item) !== index);
console.log(duplicates); // [1, 2]
reduce
方法和对象来统计重复项:可以创建一个空对象,使用reduce
方法循环遍历数组,并将每个元素作为对象的属性,出现次数作为属性值。然后可以通过查找属性值大于1的属性,确定重复项。以下是示例代码:const arr = [1, 2, 3, 4, 1, 5, 2];
const count = arr.reduce((acc, curr) => {
acc[curr] = (acc[curr] || 0) + 1;
return acc;
}, {});
const duplicates = Object.keys(count).filter((item) => count[item] > 1);
console.log(duplicates); // ["1", "2"]
groupBy
来分组元素,然后筛选出有重复项的分组。这需要使用第三方库lodash或RxJS。首先需要安装lodash或RxJS,然后引入相应的函数。以下是示例代码:使用lodash:
import { groupBy } from 'lodash';
const arr = [1, 2, 3, 4, 1, 5, 2];
const grouped = groupBy(arr);
const duplicates = Object.keys(grouped).filter((item) => grouped[item].length > 1);
console.log(duplicates); // ["1", "2"]
使用RxJS:
import { of } from 'rxjs';
import { groupBy, mergeMap, toArray } from 'rxjs/operators';
const arr = [1, 2, 3, 4, 1, 5, 2];
const duplicates = of(...arr)
.pipe(
groupBy((item) => item),
mergeMap((group) => group.pipe(toArray())),
toArray(),
filter((group) => group.length > 1),
)
.subscribe((result) => console.log(result)); // [[1, 1], [2, 2]]
这些方法都能够从Angular 6的数组列表中查找重复项,选择哪种方法取决于具体需求和项目环境。注意,这些方法并不依赖于特定的云计算品牌商,因此无需提及腾讯云或其他品牌的产品链接。
领取专属 10元无门槛券
手把手带您无忧上云