下划线是相等的和 JSON
underscore isEqual and JSON
我有一个问题,使用下划线isEqual来比较两个JSON字符串。目前我已经在 backbone 中做了一个应用程序,我正在使用 _.isEqual(savedModel.toJSON((,changedModel.toJSON(( ( 来检测页面中的模型是否已更改,并在用户厌倦导航离开时弹出"您有未保存的更改,是否要保存?"对话框。
出于某种原因,即使我什么也没做或保存了更改,我也会在随机位置获得对话框。调试让我发疯。
这可能是因为 JSON 不保证 JSON 中对象的顺序,并且下划线 isEqual 无法正确处理这种情况吗?因此,即使模型相同,JSON 中的某些属性也可能不同并且返回 false?
伪代码:
//when entering the page the original model is cloned, when user does changes to the
//page, the model is cloned again
var savedModel = currentModel.clone().toJSON();
//when the user tries to navigate away from the page
if( _.isEqual(savedModel, model.toJSON() ){
showSavePromptDialog();
}
按照 backbone.toJSON(( 使用的函数链,似乎 _.extend 用于复制对象,_.extend 使用 for.。in 循环以迭代对象。为。。in 以任意顺序迭代对象,这可能是问题的根源。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
嗨,
这个深度等于实现是为了解决类似的问题,但我可能错过了一些更精细的细节,它很好地满足了我的目的。
http://yui3.wordpress.com/2013/04/22/deep-compare-in-javascript/
相关文章:
- es6 相当于下划线查找位置
- 带嵌套json的下划线js查找
- 是否可以使用下划线.js对此 JSON 数据进行分组
- Postgresql JSON 键在字母之间显示下划线
- 使用下划线搜索数组中的JSON值
- 下划线是相等的和 JSON
- 主干.js使用下划线在模板中显示 JSON
- 使用 JSON 和下划线.js链接到内容
- 如何在javascript或下划线中计算json数据的平均值
- 余烬:下划线模型名称在JSON中保存模型
- 如何使用下划线过滤json数据
- 通过下划线或javascript实用程序库转换此JSON
- 主干/下划线/JSON 渲染问题
- 访问 JSON 对象键/值,其中值是使用下划线的数组
- 使用前导下划线解析 JSON
- Node js -读取带有下划线的.json
- 当使用json和下划线时,通过模板限制输出
- 带下划线和主干的JSON对象树递归
- 将一个json数组传递给下划线模板
- 尝试使用下划线从json中取出名称