我的情况:
var id_tag = [1,2,3,78,5,6,7,8,47,34,90];
我想返回 delete where id_tag = 90:
delete where id_tag = 90
var id_tag = [1,2,3,78,5,6,7,8,47,34];
我该怎么做?
tag_story.splice(tag_story.indexOf(id_tag), 1);
function 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);
你可以使用 .indexOf()和 .splice(),比如:
.indexOf()
.splice()
tag_story.splice(tag_story.indexOf(90),1);
你可以使用 JavaScript 的 数组 splice方法:
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的 ~波浪检查数组 中是否存在项。
indexOf
注意: IE < 9不支持数组上的 .indexOf()。如果你想确保你的代码在 IE 中工作,你应该使用 jQuery 的 $.inArray():
$.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中使用它。您可以改用 这个填充物。
$.inArray
如果您将经常使用它(并在多个数组上) ,那么扩展 Array 对象以创建一个未设置的函数。
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)
作为一种变体
delete array[array.indexOf(item)];
如果你对 delete操作员 别用这个一无所知。
delete
下面是我使用的一些助手函数:
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); } };
我喜欢用滤镜:
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; } });
可以使用 lodash.js
_. 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);