[英]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.