比较 javascript FormData 对象

rho*_*rho 2 javascript form-data

如何比较 FormData 对象,我试图在发送 ajax 请求之前检查表单是否已更改。

但似乎无法比较对象。有什么方法可以将其转换为 js Object 或优雅的方式吗?

let a = new FormData()
let b = new FormData()

console.log(a === b ) // returns false
Run Code Online (Sandbox Code Playgroud)

ale*_*non 5

我会试试这个

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
}
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试在 上迭代两个对象并比较它们,这可能会更高效。

JSON.stringify([...a.entries()]) === JSON.stringify([...b.entries()])
Run Code Online (Sandbox Code Playgroud)