我找到了兩種方法。哪一個更好?有沒有其他方法比這兩個更好?從數組中刪除元素的最佳方式:javascript/jquery
myArray.splice($.inArray(id, myArray),1);
或
myArray.splice(myArray.indexOf(id),1);
我找到了兩種方法。哪一個更好?有沒有其他方法比這兩個更好?從數組中刪除元素的最佳方式:javascript/jquery
myArray.splice($.inArray(id, myArray),1);
或
myArray.splice(myArray.indexOf(id),1);
既不選擇是安全因爲這兩個無線如果沒有找到id
,則從數組中刪除最後一個元素。
無論您使用$.inArray()
或.indexOf()
你會得到-1
如果id
不是陣列中的回報,當你通過-1
到.splice()
method它將從數組中刪除最後一個項目。
所以真的,你應該說:
var index = $.inArray(id, myArray); // or myArray.indexOf(id)
if (index > -1) myArray.splice(index, 1);
顯然,如果需要的話,你可以封裝在上面你自己的函數。
至於其中的$.inArray()
和.indexOf()
較好,這取決於你是否關心支持舊的瀏覽器(IE8主要是以下)不支持.indexOf()
。你應該如果你的代碼是在公共網站上,因爲很多人仍然使用IE8和IE7。如果你已經使用jQuery,你可以堅持使用$.inArray()
,否則使用.indexOf()
shim at MDN。
清空整個陣列:
while (myArray.length) {
var element = myArray.shift();
element = null; // free memory
}
myArray = [];
或刪除單個元件:
var element = myArray.splice(id,1);
element = null; // free memory
您也可以使用以下方法從數組中刪除元素。
var y = [1, 2, 3]
var removeItem = 2;
y = jQuery.grep(y, function(value) {
return value != removeItem;
});
OR
var arr = ["jQuery","JavaScript","HTML","Ajax","Css"];
var itemtoRemove = "HTML";
arr.splice($.inArray(itemtoRemove, arr),1);
以上兩種方式是最好的。
注意: IE < 9不支持數組上的.indexOf()。如果你想確保你的代碼在IE中工作。
如果在數組中找不到要刪除的項目,或者存在其他對原始數組的引用,則兩種方法的結果不會相同。 – nnnnnn
'indexOf'可能不適用於某些瀏覽器。但是,MDN中存在一些問題。 jQuery'inArray'方法無論如何都可以工作,但你需要使用庫。 – VisioN
indexOf方法不適用於像IE 7/8這樣的舊版瀏覽器,而$ .inArray是一個普通的循環,因此適用於每個瀏覽器 – Sushil
@VisioN你應該給你的評論作爲答案,兄弟! – thecodeparadox