我有一个这样的数组:var y = [1,2,3];
我想从数组y中移除2。
如何使用jQuery从数组中删除一个特定的值?我尝试过pop(),但它总是删除最后一个元素。
我有一个这样的数组:var y = [1,2,3];
我想从数组y中移除2。
如何使用jQuery从数组中删除一个特定的值?我尝试过pop(),但它总是删除最后一个元素。
当前回答
使用jQuery,你可以像这样做一个单行操作:
例如:http://jsfiddle.net/HWKQY/
y.splice( $.inArray(removeItem, y), 1 );
使用本地的.splice()和jQuery的$. inarray()。
其他回答
只是把Sarfraz的答案加上去,很惊讶没有人把它变成一个函数。
如果在数组中不止一次有相同的值,则使用.filter方法使用ddagsan的答案。
函数arrayremovevalue(数组,removeValue){ var newArray = jQuery。grep(数组,函数(值){返回值!= removeValue;}); 返回newArray; } var promoItems = [1,2,3,4]; promoItems = arrayremoveeval (promoItems, 3) console.log (promoItems); promoItems = arrayremoveeval (promoItems, 3);//不移除任何东西 console.log (promoItems); < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js " > < /脚本>
使用JavaScript安全地从数组中删除2:
// Define polyfill for browsers that don't natively support Array.indexOf()
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(searchElement, fromIndex) {
var k;
if (this===null) {
throw new TypeError('"this" is null or not defined');
}
var O = Object(this),
len = O.length >>> 0;
if (len===0) return -1;
var n = +fromIndex || 0;
if (Math.abs(n)===Infinity) n = 0;
if (n >= len) return -1;
k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
while (k < len) {
if (k in O && O[k]===searchElement) return k;
++k;
}
return -1;
};
}
// Remove first instance of 2 from array
if (y.indexOf(2) > -1) {
y.splice(y.indexOf(2), 1);
}
/* To remove all instances of 2 from array, change 'if' to 'while':
while (y.indexOf(2) > -1) {
y.splice(y.indexOf(2), 1);
}
*/
console.log(y); // Returns [1, 3]
Polyfill来源:Mozilla
在Javascript中没有本机的方法来做到这一点。您可以使用一个库或编写一个小函数来代替:http://ejohn.org/blog/javascript-array-remove/
/** SUBTRACT ARRAYS **/
function subtractarrays(array1, array2){
var difference = [];
for( var i = 0; i < array1.length; i++ ) {
if( $.inArray( array1[i], array2 ) == -1 ) {
difference.push(array1[i]);
}
}
return difference;
}
然后可以在代码中的任何地方调用该函数。
var I_like = ["love", "sex", "food"];
var she_likes = ["love", "food"];
alert( "what I like and she does't like is: " + subtractarrays( I_like, she_likes ) ); //returns "Naughty :P"!
这在所有情况下都有效,并避免了上述方法中的问题。希望有帮助!
//in case somebody needs something like this: multidimensional array (two items)
var ar = [[0,'a'],[1,'b'],[2,'c'],[3,'d'],[4,'e'],[5,'f']];
var removeItem = 3;
ar = jQuery.grep(ar, function(n) {
return n[0] != removeItem; //or n[1] for second item in two item array
});
ar;