根据键以外的属性删除存储在 formData 中的对象

Deleting objects stored in formData based on attribute other than key

我正在将文件存储到 formData 中,如下所示:

formData.append("images[]", file)
formData.append("images[]", file_2)
formData.append("images[]", file_3)

我知道可以使用 formData.delete() 删除文件,但在这种情况下,由于所有键都相同,我该如何具体删除值所在的对象,例如 file_2?

函数 getAll() returns 包含特定键的所有值的数组。

var values = formData.getAll("images[]");

然后您可以从数组中删除特定值并将修改后的数组设置为新值。

var index = values.indexOf(file_2); //only necessary if you dont know the index
values.splice(index, 1);
formData.set("images[]", values);

不确定这是否是最佳方式。但是您可以使用 getAll 获取所有值。然后过滤并再次追加。 Demo.

const form = new FormData
form.append('names[]', 'Chris')
form.append('names[]', 'Bob')
form.append('names[]', 'John')

console.log(Array.from(form.entries()))

const names = form.getAll('names[]')

form.delete('names[]')

names
    .filter(name => name !== 'Bob')
    .forEach(name => form.append('names[]', name))

console.log(Array.from(form.entries()))

/* 添加索引 */

formData.append("images[0]", 文件)

formData.append("images[1]", file_2)

formData.append("images[2]", file_3)

/* 按索引删除 */

formData.delete(`图片[${index}]`)