我創建一個數組搜索原型JavaScript的定製陣列搜索原型有一些問題
Array.prototype.searchRE = function(searchStr) { var returnArray = false; for (i in this) { if (typeof(searchStr) == 'object') { if (searchStr.test(this[i])) { if (!returnArray) {returnArray = []} returnArray.push(i); } } else { if (this[i] === searchStr) { if (!returnArray) {returnArray = []} returnArray.push(i); } } } return returnArray; } var mycars = new Array(); mycars[0] = "Saab"; mycars[1] = "Volvo"; mycars[2] = "BMW"; result1=mycars.searchRe(/bm/i); // return 2 result2=mycars.searchRe(/b/i); // return 0,2,searchRe result3=mycars.searchRe(/m/i); // return 2
我的問題是沒有2,爲什麼它返回「searchRe」?函數名?
謝謝。但是,你能指點我到什麼地方去了解這個嗎? 這是示例鏈接http://jsfiddle.net/mvTce/ 爲什麼result3不會發生這種情況? – cww 2010-11-04 06:01:24
如果數組鍵不是整數?我用於因爲我的數組不僅是整數,可能是字母數字? – cww 2010-11-04 06:08:21
@uniqsign,在第三種情況下不會發生,因爲你的正則表達式在函數的代碼中尋找字母'm',而你的函數沒有'm'字母,例如try:'[ ]。searchRe(/ var returnArray/i); // - > ['searchRe']' – CMS 2010-11-04 06:18:11