gpt4 book ai didi

javascript - Underscore.js - 从嵌套数组中删除项目?

转载 作者:行者123 更新时间:2023-11-29 15:17:39 26 4
gpt4 key购买 nike

我有以下对象数组:

var list = [{
"id": 119,
"files": []
}, {
"id": 126,
"files": [{
"id": 9,
"filename": "test1.docx",
}, {
"id": 10,
"filename": "test2.docx",
}]
}]

如何通过删除具有特定 ID 的文件来更新列表(文件 ID 是唯一的)例如我想删除 ID 为 10 的文件。

到目前为止,这是我使用下划线尝试过的方法,但它不起作用:

_.each(list.item, function(item, idx) {
if (_.findWhere(item.files, { id: 10 })) {
//remove file from files array
files.splice(idx, 1);
}
});

我想通过删除具有特定 id 的文件对象来更新列表

到目前为止所有的解决方案都创建了原件的副本。有什么办法可以简单地从原来的列表中拼接出来吗?

最佳答案

事实上你完全可以不用下划线:

var list = [{"id": 119, "files": []}, {"id": 126, "files": [{"id": 9, "filename": "test1.docx"}, {"id": 10, "filename": "test2.docx", }]}]

var itemId = 126
var fileId = 10

var out = list.map(function(item) {
if (item.id === itemId) {
// Copy the item in order to not mutate the original object
var itemCopy = Object.assign({}, item)
itemCopy.files = itemCopy.files.filter(function(file) { return file.id !== fileId })
return itemCopy
} else return item
})

console.log(out)

关于javascript - Underscore.js - 从嵌套数组中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com