我的情况:
var id_tag = [1,2,3,78,5,6,7,8,47,34,90];
我想要执行delete where id_tag = 90
并返回:
var id_tag = [1,2,3,78,5,6,7,8,47,34];
我该如何做到这一点?
我的情况:
var id_tag = [1,2,3,78,5,6,7,8,47,34,90];
我想要执行delete where id_tag = 90
并返回:
var id_tag = [1,2,3,78,5,6,7,8,47,34];
我该如何做到这一点?
你需要使用JavaScript的Array splice
方法:
var tag_story = [1,3,56,6,8,90],
id_tag = 90,
position = tag_story.indexOf(id_tag);
if ( ~position ) tag_story.splice(position, 1);
P.S. 如果你想了解那个酷炫的波浪线~
缩写的解释,请参考这篇文章:
使用 ~
波浪线与 indexOf
来检查数组中是否存在某个项。
Note: IE < 9 不支持数组上的 .indexOf()
。如果你想确保你的代码能在 IE 中正常工作,你应该使用 jQuery 的 $.inArray()
来代替。
var tag_story = [1,3,56,6,8,90],
id_tag = 90,
position = $.inArray(id_tag, tag_story);
if ( ~position ) tag_story.splice(position, 1);
如果您想支持IE < 9,但是页面上还没有jQuery,那么没有必要仅仅为了使用$.inArray
而使用它。您可以使用这个polyfill代替。Array.prototype.unset = function(value) {
if(this.indexOf(value) != -1) { // Make sure the value exists
this.splice(this.indexOf(value), 1);
}
}
tag_story.unset(56)
tag_story.splice(tag_story.indexOf(id_tag), 1);
id_tag
的值,它会删除数组中的最后一项!!你需要先检查id_tag
是否被找到。请看我的答案。 - Joseph Silber我喜欢使用过滤器:
var id_tag = [1,2,3,78,5,6,7,8,47,34,90];
// delete where id_tag = 90
id_tag = id_tag.filter(function(x) {
if (x !== 90) {
return x;
}
});
return x;
,那么 filter
也会删除 Boolean(id_tag) = false
的项。我认为这并不是期望的结果。 - Robertid_tag = id_tag.filter(x => x !== 90);
- klausfdelete array[array.indexOf(item)];
如果你对 delete
操作符一无所知,不要使用它。
delete
关键字,最终数组中会有一个 undefined
元素。 - Afshin Mehrabanifunction removeValue(arr, value) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] === value) {
arr.splice(i, 1);
break;
}
}
return arr;
}
removeValue(tag_story, 90);
Array.contains = function (arr, key) {
for (var i = arr.length; i--;) {
if (arr[i] === key) return true;
}
return false;
};
Array.add = function (arr, key, value) {
for (var i = arr.length; i--;) {
if (arr[i] === key) return arr[key] = value;
}
this.push(key);
};
Array.remove = function (arr, key) {
for (var i = arr.length; i--;) {
if (arr[i] === key) return arr.splice(i, 1);
}
};
.indexOf()
和.splice()
。示例代码如下:tag_story.splice(tag_story.indexOf(90),1);
_.pull(arrayName,valueToBeRemove);
在你的情况下: _.pull(id_tag,90);var id_tag = [1,2,3,78,5,6,7,8,47,34,90];
var delete_where_id_tag = 90
id_tag =id_tag.filter((x)=> x!=delete_where_id_tag);