2010-02-07 73 views

回答

2
var a = ['one', 'three', 'two']; 
a.splice(a.indexOf('three'), 1); 
alert(a); 

對於不支持的indexOf瀏覽器有一個變通方法 https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/IndexOf#Compatibility

+1

另外,我敢肯定你的參數傳遞給'splice'都搞砸了。應該是相反的:'a.splice(a.indexOf('three'),1);'見https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/Splice – 2010-02-07 15:22:09

+0

修正了arg命令。 – 2010-02-07 15:28:05

1
function RemoveArrayValue(arr, val) 
{ 
    var result = [], //empty array 
    j = 0, i, len = arr.length; 

    for(i = 0; i < len; ++i) 
     if(arr[i] != val) 
     result[j++] = val; 

    return result; 
} 

BTW:

IndexOf方法是不是IE下的JavaScript數組對象的一部分(也沒有部分的IE8),但是String對象。如果你想的indexOf方法是JS數組對象的一部分,您必須在代碼中聲明這一點:

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(val) 
    { 
     for(var i = 0, len = this.length; i < len; ++i) 
      if(this[i] === val) 
      return i; 

     return -1; 
    } 
} 
+0

'indexOf'是'Array.prototype'的一部分,但並未被所有瀏覽器實現(IE缺少它),此方法是ECMAScript 3rd Ed的一部分。標準,你應該在覆蓋它之前檢查是否存在本地'Array.prototype.indexOf',因爲本機實現閃電般快...... – CMS 2010-02-07 15:36:08

+0

對!謝謝你的評論。我按照你的建議更新了上面的代碼。 :) – 2010-02-07 15:45:11