首页 > 解决方案 > 在 JavaScript 中检查两个数组的值是否相同/相等的最佳方法

问题描述

在 JavaScript 中检查两个数组是否具有相同/相等的值(以任何顺序)的最佳方法是什么?

这些值只是数据库实体的主键,所以它们总是不同的

const result = [1, 3, 8, 77]
const same = [8, 3, 1, 77]
const diff = [8, 3, 5, 77]

areValuesTheSame(result, same) // true
areValuesTheSame(result, diff) // false

方法应该如何areValuesTheSame

PS 这个问题看起来像是重复的,但我没有找到任何与 Javascript 相关的内容。

标签: javascriptarraysequality

解决方案


我做出以下假设:

  • 数组只包含数字。
  • 你不关心元素的顺序;重新排列数组是可以的。

在这些条件下,我们可以简单地将每个数组转换为规范字符串,方法是对其进行排序并用空格连接元素。然后(多)集相等归结为简单的字符串相等。

function areValuesTheSame(a, b) {
    return a.sort().join(' ') === b.sort().join(' ');
}

const result = [1, 3, 8, 77];
const same = [8, 3, 1, 77];
const diff = [8, 3, 5, 77];

console.log(areValuesTheSame(result, same));
console.log(areValuesTheSame(result, diff));

这可能是最懒惰/最短的方法。


推荐阅读