如何从数组Javascript/Jquery中删除obj
我必须使用obj阵列(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存储删除。下面的代码抛出错误:未捕获类型错误: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位)工作,确保您已正确指定数据。。。例如,您的问题数据是错误的,因为您有一个额外的}
。。。我马上就修好。修正了问题中的输入。