废话不多说直接上代码:
//新建一个数组
let SpecsName = [{goodsName:'商品1',quantity:1},{goodsName:'商品2',quantity:2},{goodsName:'商品',quantity:1},{goodsName:'商品',quantity:1},{goodsName:'商品3',quantity:1},{goodsName:'商品1',quantity:12},];
var obj = {}; // 重复项组成的对象
SpecsName.forEach((item, index) => {
SpecsName.forEach((item1, index1) => {
// 每一项要后面的每一项进行对比
if (index1 > index && item.goodsName == item1.goodsName) {
if (!obj[item.goodsName]) {
// 设置初始数组 goodsName是要筛选的值
obj[item.goodsName] = [];
obj[item.goodsName].push(index);
obj[item.goodsName].push(index1);
}else {
obj[item.goodsName].push(index);
obj[item.goodsName].push(index1);
}
}
});
});
Object.keys(obj).forEach((item, index) => {
obj[item] = [...new Set(obj[item])]; //去掉重复下标,有重复下标是因为push了index和index1
if (obj[item].length > 1) {
console.log('有重复项:', item, '下标为:', obj[item], '重复数量为:', obj[item].length);
}
});
Object.keys(obj)方法获取的是对象的key
例:
// 1. 定义一个对象 var obj = { 0:'孙悟空',1:'猪八戒',2:'唐僧'.3:'沙和尚' }
// 2. 使用Object.keys()方法 var keyValue = Object.keys(obj)
// 3. 打印结果 console.log(keyValue) // 得到是:["0","1","2","3"]
set并集(去掉重复)
例:
let a = new Set([1, 2, 3, 2, 12, 10]);
// 并集 let union = new Set([...a]);
//console.log(union) Set {1, 2, 3, 12, 10}