### 判断两组数组对象中是否有重复值
* 第一种:
let list = [[1,2,3],[1,5,4]];
let obj = {};
let msg = ''
list.forEach((e, index) => {
for (var key in e) {
if (!obj[e[key].val]) {
obj[e[key].val] = true;
} else {
return msg = `第${~~index + 1}个第${~~key+1}行重复了`
}
}
})
return msg
* 第二种
let list = this.data.msgList.reduce((acc, val) => acc.concat(val), []);
if([...new Set(specList.map(item=>item.specDesc))].length < specList.length){
console.log('有重复')
}
### 数组合并
obj.push.apply(obj,[])
### 小程序 或者 vue 中改变对象值引用
JSON.parse(JSON.stringify(obj))
let arr1 = [1, 2, 4, 4, 3, 3, 1, 5, 3];
求:arr1 数组中重复的值
思路:定一个空数组用来放相同的值,该数组循环两次,对比!
//关键代码 for(var j of arr){ for(var i of arr){ if(j === i && newArr.indexOf(j) == -1){ newArr.push(j) } } } return newArr
悲剧的是,返回值是没有重复值跟我想的不一样 返回:[1,2,3,4,5]
修改一下
j !== i
返回 [1,2]
然后看了别人的代码
let arr = [1, 2, 4, 4, 3, 3, 1, 5, 3]; function duplicates(arr) { var result = []; arr.forEach(item => {
//判断检查数据从头到尾 与 从尾到头 的位置是否 不同 并且 每次判断 新数组里面是否有 当前值的 位置 没有那么 进行下一步 if (arr.indexOf(item) !== arr.lastIndexOf(item) && result.indexOf(item) == -1) { result.push(item); } }) return result //返回 1 3 4 } duplicates(arr)
唯一的缺点就是复杂度上升
arr.indexOf(item) 返回 0 1 2 2 4 4 0 7 4 arr.lastIndexOf(item) 返回 6 1 3 3 8 8 6 7 8 arr.indexOf(item) !== arr.lastIndexOf(item) 返回 true false true true true true true false true
为true的时候
出现了 1 4 4 3 3 1 3
然后
result.indexOf(item) == -1) 每次都要跟当前值 做对比 如果有 ,那么就不push 进去
那么 1 4 不push 3 不push 不push
最终返回143,第一次做感觉非常难,但是仔细想了之后,明白之后也就这样~~-,-