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

如何从数组Javascript/Jquery中删除obj,javascript,jquery,arrays,javascript-objects,Javascript,Jquery,Arrays,Javascript Objects,我必须使用obj阵列(obj在这些阵列中是相同的,具有相同的道具)。我想从数组文件中删除与文件中相同名称的所有obj存储删除。下面的代码抛出错误:未捕获类型错误:files.splice不是函数-我做错了什么?出于测试目的,我使用了删除文件[j],但它什么也不做。谢谢 var filesToRemove = [ { name: "SCO Bike Contessa 730 a.jpg"}, { name: "SCO Bike Contessa 730.jpg"}] var files= [ {

我必须使用obj阵列(obj在这些阵列中是相同的,具有相同的道具)。我想从数组
文件中删除与
文件中相同名称的所有obj存储删除
。下面的代码抛出错误:未捕获类型错误:files.splice不是函数-我做错了什么?出于测试目的,我使用了
删除文件[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];
                }
            }
        };
    }
};
var filesToRemove=[
{名称:“SCO自行车伯爵730 a.jpg”},
{名称:“SCO自行车伯爵730.jpg”}]
变量文件=[
{name:“SCO Bike Aspect 930.jpg”},
{名称:“SCO自行车伯爵730 a.jpg”},
{名称:“SCO自行车伯爵730.jpg”}]
删除(文件存储删除,文件)
函数删除(文件存储删除,文件){
对于(var i=0;i-1){
拼接(j,1);
}
//删除文件[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)

jQuery版本:
您可以使用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)

jQuery版本:

您可以简单地使用:

var filesToRemove=[{name:“SCO Bike Contessa 730 a.jpg”},{name:“SCO Bike Contessa 730.jpg”}]
var文件=[{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)
您可以简单地使用:

var filesToRemove=[{name:“SCO Bike Contessa 730 a.jpg”},{name:“SCO Bike Contessa 730.jpg”}]
var文件=[{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)
在不知道调用函数的情况下很难判断我同意@CertainPerformance,没有函数的输入很难判断我很抱歉,我总是忘记在不知道调用函数的情况下很难判断。我同意@CertainPerformance,没有函数的输入很难判断。很抱歉,我总是忘记它,而不是使用
过滤器检查是否存在,使用
some
var found=files\u删除.some(o=>o.name==file.name)。在本例中,找到的
将是一个布尔值。@ibrahimmahrir为简化代码提供了很好的提示!也许这是一个愚蠢的问题,但有了javascipt和jquery,我的时间很短。“映射”来自纯javascript还是jquery?我收到这样一个错误:TypeError:files.map不是一个函数,at对象。(create:569),在u(VM240 jquery.min.js:2)…@szkut,它是纯js。您正在使用jQuery吗?如果您想使用jQuery映射,那么jQuery版本工作得很好-谢谢!!我一直认为,通过添加jquery库,我实际上可以决定使用纯js或jquery的语法。这个错误告诉我,情况并非总是这样。我需要进一步搜索它。不要使用
filter
来检查是否存在,而是使用
some
var found=files\u来删除.some(o=>o.name==file.name)。在本例中,找到的
将是一个布尔值。@ibrahimmahrir为简化代码提供了很好的提示!也许这是一个愚蠢的问题,但有了javascipt和jquery,我的时间很短。“映射”来自纯javascript还是jquery?我收到这样一个错误:TypeError:files.map不是一个函数,at对象。(create:569),在u(VM240 jquery.min.js:2)…@szkut它是纯js。您正在使用jQuery吗?如果您想使用jQuery映射,那么jQuery版本工作得很好-谢谢!!我一直认为,通过添加jquery库,我实际上可以决定使用纯js或jquery的语法。这个错误告诉我,情况并非总是这样。我需要更进一步,谷歌它。我真的不明白我的代码和脚本有什么问题,在这里我得到了与第二个答案相同的错误…TypeError:files.filteris不是一个函数,。。。I',通过chrome-版本70.0.3538.77(官方版本)(64位)工作,确保您已正确指定数据。。。例如,您的问题数据是错误的,因为您有一个额外的
}
。。。我马上就修好。修正了你在问题中的输入。我真的不明白我的代码和脚本出了什么问题。我得到了与第二个答案相同的错误…TypeError:files.filteris不是函数,。。。I',通过chrome-版本70.0.3538.77(官方版本)(64位)工作,确保您已正确指定数据。。。例如,您的问题数据是错误的,因为您有一个额外的
}
。。。我马上就修好。修正了问题中的输入。