Моя ситуация:
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
method:
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.. Объяснение этого яркого ярлыка ~
tilde см. в этом сообщении:
Использование ~
тильды с indexOf
для проверки наличия элемента в массиве.
Примечание: 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, чтобы создать неустановленную функцию.
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);
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);
В качестве варианта
delete array[array.indexOf(item)];
Если вы ничего не знаете о 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);
}
};
Вы хотите использовать .indexOf()
и .splice()
. Что-то вроде:
tag_story.splice(tag_story.indexOf(90),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
._ тянуть (имяМассив, 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);