我想比较两个数组……理想情况下,有效。没有什么花哨的,如果它们相同则为 true
,否则为 false
。毫不奇怪,比较运算符似乎不起作用。
var a1 = [1,2,3];
var a2 = [1,2,3];
console.log(a1==a2); // Returns false
console.log(JSON.stringify(a1)==JSON.stringify(a2)); // Returns true
JSON 对每个数组进行编码,但是是否有更快或“更好”的方法来简单地比较数组而无需遍历每个值?
原文由 Julian H. Lam 发布,翻译遵循 CC BY-SA 4.0 许可协议
要比较数组,请遍历它们并比较每个值:
比较数组:
用法:
您可能会说“ 但是比较字符串要快得多 - 没有循环…… ”好吧,那么您应该注意有循环。第一个将 Array 转换为字符串的递归循环,第二个是比较两个字符串的递归循环。所以这种方法 比使用 string 更快。
我相信大量的数据应该始终存储在数组中,而不是对象中。但是,如果您使用对象,它们也可以进行部分比较。
就是这样:
比较对象:
我在上面说过,两个对象 实例 永远不会相等,即使它们现在包含相同的数据:
这是有原因的,因为例如 对象中可能存在私有变量。
但是,如果您只是使用对象结构来包含数据,则仍然可以进行比较:
但是,请记住,这是用于比较 JSON 之类的数据,而不是类实例和其他东西。如果您想比较更复杂的对象,请查看 此答案,它是超长功能。
要使其与
Array.equals
一起使用,您必须稍微编辑原始函数:我 为这两个功能做了一个小测试工具。
奖励:带有
indexOf
并contains
的嵌套数组Samy Bencherif 为您在嵌套数组中搜索特定对象的情况准备 了有用的函数,这些函数可在此处获得: https ://jsfiddle.net/SamyBencherif/8352y6yw/