问题描述
- 请问这个JavaScript的去重代码怎么理解?
- function unique(arr){
var obj={};
var uniAfter=[];
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){ //()里不理解
uniAfter.push(arr[i]);
obj[arr[i]]=1; //这里不理解
}}
return uniAfter;
}
解决方案
function unique(arr){var obj={};var uniAfter=[];for(var i=0;i<arr.length;i++){if(!obj[arr[i]]){ //对象没有属性arr[i]时if(!obj[arr[i]])相当于if(!(undefined))为trueuniAfter.push(arr[i]);obj[arr[i]]=1;下次数组中有相同值时if(!obj[arr[i]])相当于if(!(1))为false就进不来了uniAfter.push(arr[i]);obj[arr[i]]=1;}}return uniAfter;}
解决方案二:
这段代码的思路就是把数据放入hashtable,以数据为key索引。
之所以你不理解,是push这个函数,在别的地方定义的,而下标根据hash索引,也是别的代码实现的。
解决方案三:
javascript代码就是这点非常迷惑,任何代码都可以随便给任何对象添加功能。
解决方案四:
obj[arr[i]]=true;
改成这样你也许要理解点,javascript除了true/false可以当if判断条件外,对象,0,null,undefined这种都可以当做判断条
JavaScript中有 6 个值为“假”,这六个值是
falsenullundefined'' (空字符串)NaN
解决方案五:
打开浏览器的调试功能,跟踪一下变量的值,思路就更清析了。
解决方案六:
obj[arr[i]]=true;
也就是 对真假的判断
解决方案七:
tocVectorObject Javascript 以上代码如何理解
Javascript的有用代码
解决方案八:
var obj={};
var uniAfter=[];
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){ //()里不理解
uniAfter.push(arr[i]);
obj[arr[i]]=1; //这里不理解
这里{}表示创建Object对象
[]表示创建一个Array数组
if(!obj[arr[i]])
如果obj里有arr[i]这个属性对象的话,程序就跳过,表示是重复的
否则,uniAfter.push(arr[i]);意思是往数组放arr[i]
而obj[arr[i]]=1; 这里就是设置属性对象的值 了,因为{}中都是key/value一一对应 的,所以要给它设值
时间: 2024-09-17 03:59:33