<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//做比较的两个数组
var array1 = ['a','b','c','d']//数组1 (所有人)
var array2 = ['a','d']//数组2 (需要删除的人)
//临时数组存放
var tempArray1 = []//临时数组1
var tempArray2 = []//临时数组2
for(var i=0i<array2.lengthi++){
tempArray1[array2[i]]=true//将数array2 中的元素值作为tempArray1 中的键,值为true;
}
for(var i=0i<array1.lengthi++){
if(!tempArray1[array1[i]]){
tempArray2.push(array1[i])//过滤array1 中与array2 相同的元素;
}
}
console.log(tempArray2)
const arrAll = [
{
name: 'a',
code: 'aa',
config: false
},
{
name: 'b',
code: 'bb',
config: true
},
{
name: 'c',
code: 'cc',
config: false
},
{
name: 'd',
code: 'dd',
config: false
}
]
let newarr3 = []
arrAll.map(item =>{
array2.map(list =>{
if (item.name === list) {
newarr3.push({
name: list,
config: true,
code: item.code
})
}
})
})
console.log('333', newarr3)
let newarr4 = []
arrAll.map(item =>{
tempArray2.map(list =>{
if (item.name === list) {
newarr4.push({
name: list,
config: false,
code: item.code
})
}
})
})
console.log('444', newarr4)
console.log('newall', [...newarr3, ...newarr4])
const newarrAll = [...newarr3, ...newarr4]
const newarr5 = []
arrAll.map(item =>{
newarrAll.map(list =>{
if (item.name === list.name) {
newarr5.push({
name: item.name,
config: list.config,
code: item.code
})
}
})
})
console.log('5555', newarr5)
let ques= [
{a:2,b:2},
{a:2, b:2}]
console.log([...new Set(ques.map(e =>JSON.stringify(e)))].map(e =>JSON.parse(e)))
</script>
</body>
</html>
相同的a.filter(function(v){returnb.indexOf(v)>-1})不同的 a.filter(function(v){ return !(b.indexOf(v) >-1) }).concat(b.filter(function(v){ return !(a.indexOf(v) >-1)}))你这个代码不是 JS 啊,看起来倒有些像 Golang。。。
你没有说明你这个比较的目的,因此如果没有别的要求,那么下面是 JS 的代码:
/*** 比较两个数组的重复部分
* @param {Array.<number>} arr1 数组1
* @param {Array.<number>} arr2 数组2
* @return {Array.<number>} 返回一个数组,元素 2*n 是匹配开始的位置,元素 2*n+2是匹配终止的地方
*/
function hutiaCompare(arr1, arr2){
/** @type {number} */
var len = Math.min(arr1.length, arr2.length)
/** @type {Array.<number>} */
var re = []
for (var i=0 i<len i++){
// 为了便于你理解,我把下面两个条件分开写了
// 按我习惯一般会写在一起
// 条件1:如果匹配,且没有记录过匹配起始位置
if (arr1[i] == arr2[i] && re.length%2===0) {
re.push(i)
// 条件2:如果不匹配,且已经记录过匹配起始位置了
} else if (arr1[i] != arr2[i] && re.length%2===1){
re.push(i)
}
}
if (re.length %2 === 1) re.push(i)
return re
}
以上,请采纳,请给分。