var arr = ['a', 'b', 'c'];
var sid = ['go'];
for (var key in arr)
console.log(sid)
很簡單的問題,最後的輸出結果卻是:
[ 'go', , , , , , , , , , , 'b', , , , , , , , , , 'c' ]
通過上面的輸入結果我們可以發現這麼幾個問題:
sid
裡面多了很多空項,length
明顯的增多了
arr[0]
的值在sid
中沒有出現
問題1:sid
裡面多了很多空項,length
明顯的增多了
略過痛苦的分析步驟直接來重點內容:
通過列印key + 1
我們可以找到問題的關鍵。通過列印我們可以得到如下資訊。
在第一次迴圈的時候key + 1
的值為01
,此後依次為:11
,21
。
通過這個我們可以判斷:這個key
其實是乙個string
型別的。
所以上面的步驟相當於:
sid['01'] = arr[0];
sid['11'] = arr[1];
sid['21'] = arr[2];
note: for..in 不應該被用來迭代乙個下標順序很重要的 array .可能就包含這種情況吧。
問題2:arr[0]
的值在sid
中沒有出現
arr[0]
的值其實通過sid['01']
可以取到。
此外,在node
下列印sid
的時候可能與在console
中列印出現不同的結果。
對於陣列的遍歷,最好使用:foreach
,map
,some
,filter
,find
等方法。尤其是是這種牽扯到陣列下標的盡量不要使用for-in
來處理,如果非要使用可以做如下處理:
var arr = ['a', 'b', 'c'];
var sid = ['go'];
for (var key in arr)
console.log(sid)
以避免如上的問題。 Ajax請求在資料量大的時候出現超時的解決方法
最近在用extjs做專案,在載入資料量特別大的時候會出現載入超時現象,在fb下檢視,原來是ext預設ajax請求30秒。在網上搜到下面的解決方法,以備參考和其他人參考。extjs做ajax請求的時候,預設的相應時間是30秒,如果後來資料查詢時間超過30秒,extjs就會報錯。這就需要修改extjs的...
python處理陣列時候冒號的妙用
定義乙個numpy模組 import numpy as np x np.array 1,2,3 5,6,7 7,8,9 print x out 64 array 1,2,3 5,6,7 7,8,9 現在用冒號完成反轉 print x 1 out 65 3 2 1 7 6 5 9 8 7 x 1 這段...
在陣列中找到出現頻率大於1 4的數
演算法的核心思想很簡單,每次刪去不同的4個數,最後剩下的元素有可能是頻繁項。假設陣列有15個元素,若乙個元素的出現頻率大於1 4,其必須出現4次。不妨設陣列為,d表示刪去該數。我們來模擬一下演算法的過程。第一次 1d,2d,1,4d,1,4,2,9d,1,7,4,3,9,4,3 剩下 1,1,4,2...