比较 javascript FormData 对象
comparing javascript FormData object
如何比较 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]})
}
然后你可以只比较两个对象数组。
如何比较 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]})
}
然后你可以只比较两个对象数组。