2016-07-05 3 views
0

Возможно, очень очевидный вопрос от новичка:Удаление объекта из массива, используя одно значение

Если у меня есть следующий массив ...

var arr = 
    [ 
    {id: 1, item: "something", description: "something something"}, 
    {id: 2, item: "something else", description: "something different"}, 
    {id: 3, item: "something more", description: "more than something"} 
    ] 

... и хотел удалить конкретный объект внутри него, позвонив по идентификатору (в данном случае, нажав на DIV, учитывая соответствующий идентификатор) ...

var thisItem = $(this).attr("id"); 

... я мог сделать это без использования для цикла, чтобы соответствовать arr[i] и thisItem? И если да, то как? У меня будет большой массив, поэтому работа для цикла кажется очень тяжелой.

Спасибо!

+0

Для последних браузеров [ 'arr.splice (arr.findIndex (о => o.id === 2), 1);'] (https: //jsfiddle.net/54mLn6m3/) – Tushar

ответ

1

Вы можете использовать JQuery-х grep

arr = jQuery.grep(arr, function(value) { 
    return value.id != id; 
}); 
+0

Это также отлично работает. Благодаря! – dedaumiersmith

2

Вы можете использовать Array.filter для фильтрации любого массива. Этот метод принимает функцию фильтрации в качестве аргумента и запускает его для каждого элемента исходного массива. Если возвращаемое значение этой функции равно false, этот элемент фильтруется из нового массива, который возвращается. Исходный массив не влияет.

var arr = 
    [ 
    {id: 1, item: "something", description: "something something"}, 
    {id: 2, item: "something else", description: "something different"}, 
    {id: 3, item: "something more", description: "more than something"} 
    ]; 

function filterArray(id){ 
    return arr.filter(function(item){ 
    return item.id != id; 
    });//filter 
}//filterArray() 

console.log(filterArray(2)); 
+0

'array.filter' - это способ пойти – webdeb

+0

Отлично работает. Спасибо! – dedaumiersmith

0

Plain JS Решение:

var arr = [{ 
    id: 1, 
    item: "something", 
    description: "something something" 
}, { 
    id: 2, 
    item: "something else", 
    description: "something different" 
}, { 
    id: 3, 
    item: "something more", 
    description: "more than something" 
}]; 

var filtered = filterArrayByElemId(arr, 2); 
console.log(filtered); 

function filterArrayByElemId(arr, id) { 
    return arr.filter(function(item) { 
    return item.id != id; 
    }); 
} 
Смежные вопросы