czx陈先森
2015-06-16 01:14
各位大神,帮忙看看哪里错了,我是照着左边提醒那里打的。谢谢!
还有求解这里是什么意思?
if(countMap1[i]){
countMap1[i]++;
}else{
countMap1[i]=1;
}
if(countMap2[i]){
countMap2[i]++;
}else{
countMap2[i]=1;
我不理解这里的if括号里面的是什么意思,还请各位大神解惑。十分感谢!!代码如下:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030">
<title>Untitled Document</title>
</head>
<body>
<script type="text/javascript">
/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2){
if(!(arr1 instanceof Array)
|| !(arr2 instanceof Array)){
return false;
}
if(arr1.length!==arr2.length){
return false;
}
var i = 0,
n = arr1.length,
countMap1 = {},
countMap2 = {},
t1, t2,
TYPES = ['string', 'boolean', 'number', 'undefined', 'null', 'function', 'date', 'window'];
for(; i < n ; i++){
t1 = typeOf(arr1[i]);
t2 = typeOf(arr2[i]);
if(countMap1[i]){
countMap1[i]++;
}else{
countMap1[i]=1;
}
if(countMap2[i]){
countMap2[i]++;
}else{
countMap2[i]=1;
}
}
function typeOf(ele){
var r;
if(ele === null){
r = 'null';
}else if(ele instanceof Array){
r = 'array';
}else if(ele === window){
r = 'window';
}else if(ele instanceof Date){
r = 'date'
}else{
r = typeof ele;
}
return r;
}
for(i = 0 , n = TYPES.length; i < n; i++){
if(countMap1[TYPES[i]]
!== countMap2[TYPES[i]]){
return false;
}
}
return true;
}
</script>
<script src="testData.js"></script>
</body>
</html>
感觉代码有缺失,t1 t2都没有和
for(; i < n ; i++){ t1 = typeOf(arr1[i]); t2 = typeOf(arr2[i]); if(countMap1[i]){ countMap1[i]++; }else{ countMap1[i]=1; } if(countMap2[i]){ countMap2[i]++; }else{ countMap2[i]=1; } }
感觉这个应该改成,你可以试试
for(; i < n ; i++){ t1 = typeOf(arr1[i]); t2 = typeOf(arr2[i]); if(countMap1.t1){ countMap1.t1++; }else{ countMap1.t1=1; } if(countMap2.t2){ countMap2.t2++; }else{ countMap2.t2=1; } }
我没验证,这个方法不是我用的,理解有点复杂,所以只是想到了他的思路,就是统计每个类型的数目,最后比较统计结果是不是一样的。大致思路就是这个,改动的部分呢,就是对象的key value进行运算,存在就+1,不存在就赋值1.
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题