javascript - 在 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 相关的内容。
解决方案
我做出以下假设:
- 数组只包含数字。
- 你不关心元素的顺序;重新排列数组是可以的。
在这些条件下,我们可以简单地将每个数组转换为规范字符串,方法是对其进行排序并用空格连接元素。然后(多)集相等归结为简单的字符串相等。
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));
这可能是最懒惰/最短的方法。
推荐阅读
- c# - How to add multiple records in one INSERT in mySQL?
- automation - 停止 bitnami wampstack 在 Windows 启动时自动运行
- javascript - How to search for text using PDF.js?
- c++ - 任何返回类型的可变参数函数包装器
- javascript - 如何在 MailApp 消息中包含 IF 语句?
- javascript - 如何在不使用 Math.random() 函数的情况下使用 JavaScript 创建随机数生成器函数?
- ios - How do I use Navigation.pop to go to the previous screen on iOS?
- python - 根据来自另一个数据帧的值将数据帧拆分为多个数据帧
- r - 使用 for 循环更改数据框中的列
- javascript - babel loader 无法识别 React 应用程序中的 ES6 代码