2010-02-07 74 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