我该如何比较FormData对象?在发送ajax请求之前,我想检查表单是否已更改。
但是似乎无法比较对象。是否有将其转换为js对象或优雅的方法?
let a = new FormData()
let b = new FormData()
console.log(a === b ) // returns false
我该如何比较FormData对象?在发送ajax请求之前,我想检查表单是否已更改。
但是似乎无法比较对象。是否有将其转换为js对象或优雅的方法?
let a = new FormData()
let b = new FormData()
console.log(a === b ) // returns false
我会尝试这个
const a = new FormData();
a.append("username", "Alexander");
a.append("accountnum", 123);
const b = new FormData();
b.append("username", "Alexander");
b.append("accountnum", 123);
let different = false
for (let [key, value] of b.entries()) {
if (a.get(key) !== value) different = true
}
JSON.stringify([...a.entries()]) === JSON.stringify([...b.entries()])
formData.entries()
。let a = new FormData()
let b = new FormData()
let arr1 = [];
let arr2 = [];
for(let pair of a.entries()) {
const key = pair[0];
arr1.push({[key]: pair[1]})
}
for(let pair of b.entries()) {
const key = pair[0];
arr2.push({[key]: pair[1]})
}
然后你可以比较两个对象数组。
export default function formDataEqual(one, two) {
return new URLSearchParams(one).toString() === new URLSearchParams(two).toString();
}
defaultValue
和value
。https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLInputElement - undefined
b
中有一个条目不在a
中的更改(尽管如果表单正在动态修改,这只会是一个问题)。 - Quentin