Как удалить объект из массива Javascript / Jquery - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть массивы obj (obj одинаковы в этих массивах, с одинаковыми реквизитами). Я хочу удалить все объекты с тем же именем, которое можно найти в filesToRemove из массива files. Код ниже выдает ошибку: Uncaught TypeError: files.splice is not a function - что я делаю не так? Для тестирования я использовал delete files[j];, но он ничего не делает. Спасибо!

var filesToRemove = [
{ name: "SCO Bike Contessa 730 a.jpg"},
{ name: "SCO Bike Contessa 730.jpg"}]

var files= [
{ name: "SCO Bike Aspect 930.jpg" },
{ name: "SCO Bike Contessa 730 a.jpg"},
{ name: "SCO Bike Contessa 730.jpg"}]

remove(filesToRemove, files)
function remove(filesToRemove, files) {
    for (var i = 0; i < filesToRemove.length; i++) {
        if (filesToRemove[i].name) {
            for (var j = 0; j < files.length; j++) {
                if (files[j].name == filesToRemove[i].name) {
                    if (j > -1) {
                        files.splice(j, 1);
                    }
                    //delete files[j];
                }
            }
        };
    }
};

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы можете просто использовать фильтр с некоторыми :

var filesToRemove = [ { name: "SCO Bike Contessa 730 a.jpg"}, { name: "SCO Bike Contessa 730.jpg"} ]
var files= [ { name: "SCO Bike Aspect 930.jpg" }, { name: "SCO Bike Contessa 730 a.jpg"}, { name: "SCO Bike Contessa 730.jpg"}]

const result = files.filter(x => !filesToRemove.some(y => y.name == x.name))
console.log(result)

Фильтр отфильтрует исходный массив, убедившись, что его значения не в массиве filesToRemove с помощью !some

0 голосов
/ 02 ноября 2018

Вы можете использовать некоторые методы массива JS.

var files = [{name: 'foo.txt'}, {name: 'bar.txt'}, {name: 'baz.txt'}]
var files_to_remove = [{name: 'bar.txt'}]

files = files.map(file => {
  var found = files_to_remove.some(o => o.name == file.name)
  return found ? null : file
})

console.log(files)

https://jsbin.com/pubirawoqe/edit?js,console

JQuery версия: https://jsbin.com/kejacezuta/edit?js,console

...