我有一个数组数组。内部数组是 16 个插槽,每个插槽都有一个数字 0..15。一个简单的排列。
我想检查外部数组中包含的任何数组是否具有与测试数组相同的值(16 个值的排列)。
我可以通过以下方式轻松做到这一点:
var containsArray = function (outer, inner) {
var len = inner.length;
for (var i=0; i<outer.length; i++) {
var n = outer[i];
var equal = true;
for (var x=0; x<len; x++) {
if (n[x] != inner[x]) {
equal = false;
break;
}
}
if (equal) return true;
}
return false;
}
但是有更快的方法吗?
我可以为每个排列分配一个整数值 - 实际上是一个 64 位整数吗?
插槽中的每个值都是 0..15,这意味着它可以用 4 位表示。有 16 个时隙,这意味着总共 64 位信息。
在 C# 中,使用 Int64 类型使用这种方法很容易计算和存储内部数组(或排列)的散列。Javascript 是否有 64 位整数数学可以使这个速度更快?