我正在做一個初學者練習,找到一組數字的平均值/中值/模式/範圍。我在模式現在,發現this:這對於/ in循環是如何工作的?
var store = ['1','2','2','3','4'];
var frequency = {}; // array of frequency.
var max = 0; // holds the max frequency.
var result; // holds the max frequency element.
for(var v in store) {
frequency[store[v]]=(frequency[store[v]] || 0)+1; // increment frequency.
if(frequency[store[v]] > max) { // is this frequency > max so far ?
max = frequency[store[v]]; // update max.
result = store[v]; // update result.
}
}
它的工作原理,但我不明白。
|| 0
在第一行做了什麼?- 爲什麼我不能更改密鑰名稱?
frequency["key"+store[v]]=(frequency[store[v]] || 0)+1;
回報{key1: 1, key2: 1, key3: 1, key4: 1}
沒有{1: 1, 2: 2, 3: 1, 4: 1}
,所以鍵發揮了重要作用。
- if語句是否同時測試關鍵和值?
更換的frequency[store[v]];
任何實例具有可變(var freqTest = frequency[store[v]];
,循環內部或外部創建的)破壞的東西。
整個事情真的超越了我的頭腦。
首先,你居然[不應該用'對...對數組in'枚舉!(https://stackoverflow.com/q/500504/1048572) – Bergi
的'||如果沒有定義frequency [store [v]]'0',則0使用0作爲默認值。簡單的例子:'var x = undefined || 2'結果在'x === 2' – ray
@Bergi夠公平!我會記住的。我只是想了解它是如何運作的。 – delz