javascript - 在 JavaScript 中检查两个数组的值是否相同/相等的最佳方法

标签 javascript arrays equality

在 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 方法应该是什么样子?

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

最佳答案

我做出以下假设:

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

在这些条件下,我们可以通过对每个数组进行排序并将元素连接起来,将每个数组简单地转换为规范字符串。空间。然后(多)集合相等性归结为简单的字符串相等性。

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));

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

关于javascript - 在 JavaScript 中检查两个数组的值是否相同/相等的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725971/

相关文章:

javascript - react Hook 陈旧状态

javascript - jQuery FullCalendar 事件拖放在移动设备、选项卡中不起作用

c++ - double : efficency and quality of my test 的相等性检查

java - scala:重写基本类型的等于

javascript - 如何默认选择TinyMCE中的 "Justify text"切换按钮?

javascript - 如何在Js Cookies中存储一个长字符串?

javascript - array.remove() 后的回调

javascript - 从对象数组创建新的对象数组

arrays - $in 在环回中不起作用

ios - Swift 中的 Equatable 测试