【发布时间】:2016-06-05 03:03:26
【问题描述】:
我正在尝试比较 json_str1 和 json_str2,这里它应该返回 true,因为 json_str1 中的所有元素都存在于 json_str2 中。
现在我正在这样做
json_str1 = '{"0":"a","1":"b","2":"c"}';
json_str2 = '{"0":"c","1":"b","2":"a"}';
json_obj1 = $.parseJSON(json_str1);
json_obj2 = $.parseJSON(json_str2);
arr1 = $.map(json_obj1, function(el) { return el });
arr2 = $.map(json_obj2, function(el) { return el });
if($(arr1).not(arr2).length === 0 && $(arr2).not(arr1).length === 0)
alert("equal");
else
alert("not equal");
如何在不将对象转换为数组的情况下使其简短而简单?
【问题讨论】:
-
不应该是
JSON.stringify(json_str1) === JSON.stringify(json_str2)。 Also see how to determine equality for two javascript objects -
如果只想检查 json_str1 中的所有字符是否存在于 json_str2 中,可以对 JSON.stringify(json_str1).sort() 进行简单排序,因为 json 对象可能不会在订购。
-
@Shubh,如果 json 与其他 json 对象的相同键值的顺序不同,它将失败。
-
或许有必要问问他为什么要这样做,找到更简单的方法。
-
既然没有人说过:javascript中没有JSON对象这样的东西。相反,有 JS 对象,可以使用 JavaScript Object Notation 显示为字符串.因此,既然您已经将 JSON 字符串解析为 JS 对象,那么您想要的是比较两个 JS 对象。
标签: javascript arrays json