2016-07-27 11 views
0
a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4]; 
result = {}; 
for (var i = 0; i < a.length; ++i) { 
    if (!result[a[i]]) 
     result[a[i]] = 0; 
    ++result[a[i]]; 
} 

有人可以解釋這段代碼嗎?我不確定++result[a[i]]和條件的意思。這是創意邏輯還是我不知道的高級JS。代碼將數組分解爲對象的說明JavaScript

+0

單獨的代碼不會對數組進行排序 – yanguya995

+0

它不是對數組進行排序,它是計算數組元素的頻率分佈。我認爲@derp說得很好。 – Touffy

回答

2

它的數量多少次出現在陣列中的計數

!result[a[i]]檢查我們是否已經看到這個數字之前,如果沒有,我們設置計數爲0。然後,我們增加與計數使用++result[a[i]];

這裏的下面 https://jsfiddle.net/erth1qq2/

0

小提琴這是一個非常簡單的code.It計數數組中元素的repitition。

在第一次迭代

結果[A [1]]結果[5]這是目前所以如果條件如果(!導致[A [1] ])滿足這樣結果的值[5]被分配0和增加結果[A [1] ++成爲1.

在第二次迭代 結果[a [i]]結果[5]當前爲1,所以if條件如果(!result [a [i]])不滿足,所以結果[5]的值增加由圖1和2變得

這樣,每個元件的重複被存儲到與所述元件本身作爲密鑰

結果

希望你理解

感謝

0

!result[a[i]]被檢查對象鍵存在編輯!

  • 如果存在,它會通過分配0到它的值,並將其值增加1。
  • 如果不存在,它將分配0到它的值,並將其值增加1。

    a  = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4]; 
    result = { }; 
    for(var i = 0; i < a.length; ++i) { 
    if(!result[a[i]]) //check object key is exist 
        result[a[i]] = 0; 
    ++result[a[i]]; 
    }