我必须使用 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/