程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 數組 去重-數組去重的問題 為什麼o[v]=1

數組 去重-數組去重的問題 為什麼o[v]=1

編輯:編程綜合問答
數組去重的問題 為什麼o[v]=1

請問,循環之後的if判斷力,o[v]=1,是什麼意思?謝謝。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>

<script type="text/javascript">

var arr=[1 ,1 ,2, 3, 3, 2, 1];
Array.prototype.unique=function(){          //unique應該是自定義的,這個是往數組原型上添加一個函數(屬性),以後各個你定義的數組都可以直接使用這個函數(屬性)
    var ret=[];
    var o={};
    var len=this.length;
    for(var i=0; i<len; i++){
        var v=this[i];
        if(!o[v]){
            o[v]=1;
            ret.push(v);
        }
    }
    return ret;
}

alert(arr.unique());

</script>

</head>

<body>

</body>
</html>

最佳回答:


要明白這幾個數組的作用就知道為什麼設置o[v]=1 了。
ret這個數組很明白,是存放結果用的。
了解o這個數組,需要關注for循環中,v這個值是獲取到輸入數組的值(i是輸入數組的索引),所以v的取值依次是“1 ,1 ,2, 3, 3, 2, 1”,在if判斷中,如果某個數被添加到ret中了,則在o這兒數組中做個標識,表示該數下次不用記入ret數組,也就是重復數組。

比如:取第一個1的時候,o數組為空,所以進入if條件,if執行完成後,o中存儲的是1==>1,下次再取到v為1時,o[1]=1,所以不滿足if條件,所以就不會再向ret數組中壓入數據值了。也就是說o這個數組是來記錄哪些數據已經添加到結果,用來判重使用的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved