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
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
它的數量多少次出現在陣列中的計數
的!result[a[i]]
檢查我們是否已經看到這個數字之前,如果沒有,我們設置計數爲0。然後,我們增加與計數使用++result[a[i]];
小提琴這是一個非常簡單的code.It計數數組中元素的repitition。
在第一次迭代
結果[A [1]]是結果[5]這是目前空所以如果條件如果(!導致[A [1] ])滿足這樣結果的值[5]被分配0和增加結果[A [1] ++成爲1.
在第二次迭代 結果[a [i]]爲結果[5]當前爲1,所以if條件如果(!result [a [i]])不滿足,所以結果[5]的值增加由圖1和2變得
這樣,每個元件的重複被存儲到與所述元件本身作爲密鑰
結果希望你理解
感謝
!result[a[i]]
被檢查對象鍵存在編輯!
如果不存在,它將分配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]];
}
單獨的代碼不會對數組進行排序 – yanguya995
它不是對數組進行排序,它是計算數組元素的頻率分佈。我認爲@derp說得很好。 – Touffy