JavaScript如何比较两个数组的内容是否相同

JavaScript014

JavaScript如何比较两个数组的内容是否相同,第1张

Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都会返回false<script type="text/javascript">alert([]==[])alert([]===[])</script>要判断JS中的两个数组是否相同,需要先将数组转换为字符串,再作比较。以下两行代码将返回true<script type="text/javascript">alert([].toString()== [].toString())alert([].toString()===[].toString())</script>JS要比较两个数组是否有相同的元素,即两个数组所有元素都相同,但元素的顺序不一定一致。只就需要先将数组进行排序,再比较两个数组是否相等。试比较以下两行代码:<script type="text/javascript">alert([1,2,3].toString()== [3,2,1].toString())alert([1,2,3].sort().toString()== [3,2,1].sort().toString())</script>

1、[] ==[] 因为数组是引用类型的,两个数组的引用不可能相等,所以值为false 2、'0.00' == 0 数字型字符串与纯数字之间的比较,js会将字符串转换成数字再作比较,转换后的结果是 0.00 == 0 ,所以值为false。 3、'0'<1 同上,字符串转换成数字 0 <1 ,所以值为false 4、'abc' == 0 这里的字符串'abc'不是数字型字符串,无法转换成数字,将这种类型的字符串与数字做比较时,会先转换成NaN,所以值为false 5、'11'<'2' 两个数字型字符串之间的比较,进行这种比较时会依次取每个字符转换成ASCII码进行比较,因为'1'的ASCII码小于'2',后面就不用再往下进行比较了。 6、1 == true'1' == true'2' == true1为true,0为false 这是众所周知的,所以1 == true的值为true。 在js中,字符串和布尔值进行比较的时候,会把布尔值转化成数字类型。所以'1' == true的比较会转换成'1' == 1,值也是为true的。'2' == true的比较会转换成'2' == 1,值必然为false。 但是,!!'2' == true 返回的是true,因为用两个非符号 !! 可以把非空字符串转换成true。 7、== 与 ===的区别 在js中,==表示相等(值相等),===表示恒等(值和类型都要相等)。在用==比较时如果被比较的两者类型不同,会先做类型转换再判断值得大小,如果是===类型和值必须都相等。

<!DOCTYPE html>

<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>