簡體   English   中英

遍歷對象元素javascript

[英]iterating through object elements javascript

我試圖理解這一點:

  function keyValue(array) {
  var modeObj = {};
  var i=0;
  // create modeObj
  array.forEach(function(num){

    if (!modeObj[num]) {
      modeObj[num] = 0;

    } 
    modeObj[num]++;

     console.log("1 list object keys "+Object.keys(modeObj));
     console.log("2 list object value "+Object.values(modeObj));
    i++;
    console.log("3 iteration num "+i); 
  });  
}

當遍歷數組 [1,4,5,4,6,1] 時,結果如下:

1 list object keys 1
2 list object value 1
3 iteration num 1
1 list object keys 1,4
2 list object value 1,1
3 iteration num 2
1 list object keys 1,4,52 list object value 1,1,1
3 iteration num 31 list object keys 1,4,5
2 list object value 1,2,1
3 iteration num 4
1 list object keys 1,4,5,62 list object value 1,2,1,1
3 iteration num 5
1 list object keys 1,4,5,6
2 list object value 2,2,1,1
3 iteration num 6

如果在文獻中發現“Object.keys 方法用於返回簡單數組的可枚舉屬性”。 從數組 [1,4,5,4,6,1] 中可以清楚地看出,鍵 1 和鍵 4 在數組中出現了兩次。 如果我們檢查所有對應鍵的值,我們可以看到鍵值表示特定鍵的出現次數。 鍵 [1,4,5,6],值 - 2,2,1,1。

在第一行中,聲明了新對象,然后通過數組進行迭代,該數組被發送到函數“keyValue()”中。 數組 [1,4,5,4,6,1]。

通過表達式“var modeObj = {};” 只聲明了空對象。

if(!modObj[element]) 檢查迭代中對象的鍵(元素)是否未定義或具有某些值。 如果鍵不存在,則值 0 將作為值添加到迭代中的當前鍵。 稍后,它會被表達式“modeObj[num]++;”改為值1

我不確定的是我對表達式modObj[element]++; 的解釋 我相信可以分兩步解釋:

第一步: modObj[element]= modObj[element]

第二步:然后modObj[元素]=modObj[元素]+1

這意味着modObj[element]將增加特定鍵的值,如果鍵是唯一的,將僅添加 1 表示鍵的出現次數,如果是第二次或任何其他出現的鍵將將現有出現次數加 1。

那是對的嗎?

只需在瀏覽器的開發人員工具中嘗試此代碼即可。

modeObj[num]++將創建一個以num作為鍵和NaN的 KVP(因為那里沒有可以遞增的數字……如果鍵 DID 存在,並且它的值是有效數字,那么該數字將增加 1)作為價值。

所以modeObj[1]導致modeObj為: {1: NaN}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM