<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>
<!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>
1 .undefined,Null,Boolean,Number,String,Symbol.这些类型的数据使用值引用来比较是否一致
1 .Function,Array,Regex,Object
2 .即使每个值都一样,返回的值都是false
1 .引用比较,===就是浅比较.只是检查左右两边是否是同一个对象引用
1 .先检查连个 *** 作数据类型,类型相同,进行===比较
2 .如果不同,则进行一次类型转换,转换城相同的类型进行比较
1 .直接比较类型,类型不一致就直接false
2 .如果俩和值的引用都是同一个对象或是函数,那么相等,否则不相等.
3 .对象使用三个等号是用来比较引用的
4 .所以才会有那中地址不变,前后就相等,所以才用特殊的方式来处理数组和对象
1 .原值相等.深比较比的是俩个对象的所有属性是否都相等,深比较会做递归的方式遍历连个对象的所有属性.
2 .深比较不会管这俩个对象是不是同一个对象的引用.那感觉这个才是我么你想要的.
3 .只要连个对象的所有属性都相等,深比较久返回true
4 .完全的是一个diff函数.之前搞过的
1 .对象值不变的情况下, 对象引用变化会导致React组件的缓存失效,进而导致性能问题(不小心做了一个这种 *** 作,浪费性能)
2 .对象值变化的情况下,对象引用不变化导致的React的组件和数据不一致.你改了数据,但是没有改引用,所以他还是以为是旧的,所以没走刷新的流程
3 .
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)