javascript - 如何从数组 Javascript/Jquery 中删除 obj

标签 javascript jquery arrays javascript-objects

我必须使用 obj 数组(这些数组中的 obj 是相同的,具有相同的 Prop )。我想从数组 files 中删除所有可以在 filesToRemove 中找到的同名对象。下面的代码抛出错误: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];
                }
            }
        };
    }
};

最佳答案

可以使用一些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

关于javascript - 如何从数组 Javascript/Jquery 中删除 obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111197/

相关文章:

javascript - 当标签或窗口不活动时,浏览器如何暂停/更改 Javascript?

javascript - 在change()上从文本框值更新JQuery-UI slider

c# - MVC 将自定义异常重新抛出为 JSON

JavaScript - 为淘汰赛创建数组

java - java中动态分配的数组数组

arrays - 比较数组 golang

javascript - 如何在 react-native 中像 iOS 一样模态显示屏幕

javascript - 在上下文切换上重新应用单击绑定(bind)

javascript - 如何防止队列建立 jQuery

jquery - 带有光滑轮播的固定宽度幻灯片