javascript-请问这个JavaScript的去重代码怎么理解?

问题描述

请问这个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

javascript-请问这个JavaScript的去重代码怎么理解?的相关文章

JavaScript学习笔记之数组去重_javascript技巧

推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组相关的知识,趁此机会整理了一些有关于JavaScript数组去重的方法. 下面这些数组去重的方法是自己收集和整理的,如有不对希望指正文中不对之处. 双重循环去重 这个方法使用了两个for循环做遍历.整个思路是: 构建一个空数组用来存放去重后

Javascript 遮罩层和加载效果代码

这篇文章介绍了Javascript 遮罩层和加载效果代码,有需要的朋友可以参考一下   复制代码 代码如下:  //loading function showLoad(tipInfo) { var iWidth = 120; //弹出窗口的宽度; var iHeight = 0; //弹出窗口的高度; var scrolltop = 0; var scrollleft = 0; var cheight = 0; var cwidth = 0; var eTip = document.create

Javascript实例教程(12) 隐藏script代码

javascript|教程 利用javascript从旧的浏览器中隐藏javascript 对于javascript初学者来说,它们经常忘记在旧浏览器(比如Netscape Navigator 1.12)隐藏javascript代码.你也许会问为什么要隐藏呢?原因很简单,就是旧的浏览器不支持javascript.如果你不加以正确的措施,在旧的浏览器上将会显示你的javascript源代码,跟HTML一样,所以你必须将javascript隐藏起来.具体,你可以使用一些HTML语句来轻松实现从旧的浏

Javascript实现音乐随机播的代码

javascript|随机 将以下代码放在<head>与</head>之间即可. <SCRIPT language="JavaScript"><!--var sound1="midi/1.mid"var sound2="midi/2.mid"var sound3="midi/3.mid"var sound4="midi/4.mid"var sound5="

JavaScript禁止页面操作的示例代码

 本篇文章是对JavaScript禁止页面操作的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 单的JS禁止页面右键菜单--避免网站信息被盗用  代码如下: <script type="text/javascript">   function block(oEvent){    if(window.event)     oEvent=window.event;    if(oEvent.button==2)     alert("鼠标右键不可用&

JavaScript输入邮箱自动提示实例代码

 这篇文章主要介绍了JavaScript输入邮箱自动提示实例代码,有需要的朋友可以参考一下 本来想把之前对artTemplate源码解析的注释放上来分享下,不过隔了一年,找不到了,只好把当时分析模板引擎原理后,自己尝试   写下的模板引擎与大家分享下,留个纪念,记得当时还对比了好几个模板引擎来着.   这里所说的js的模板引擎,用的是原生的javascript语法,所以很类似php的原生模板引擎.       前端模板引擎的作用?   1. 可以让前端开发更简单,不需要为了生成一个dom结构而使

javascript 回到顶部效果的实现代码

 本篇文章主要是对javascript 回到顶部效果的实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: //speed 滚动速度 time 时间间隔 function gotoTop(speed,time){       speed = speed || 0.1;     time = time || 16;       // 滚动条到页面顶部的水平距离     var x = document.body.scrollLeft;       // 滚动条到页面顶部的

javascript实现json页面分页实例代码

 这篇文章主要介绍了javascript实现json页面分页实例代码,需要的朋友可以参考下 下午有个朋友问json 数据怎么分页 就捣鼓了一个东东出来    下面直接代码: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

JavaScript 实现鼠标拖动元素实例代码

 这篇文章主要介绍了JavaScript 实现鼠标拖动元素实例代码,需要的朋友可以参考下 一.前言   最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.fn.draggable插件,在接触一些资料和别人的思路,今天终于把这个拖动功能给完善了,下面就来看看它的实现     二.设计思路   在拖动元素上绑定鼠标按下事件,在文档对象中绑定鼠标移动,鼠标弹起事件: