在JavaScript中检查switch-case
数组的长度是否最有效的方法是什么?
答案 0 :(得分:3)
将Array.every
与长度访问器一起使用。
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const array3 = [7, 8, 9, 0];
const firstLength = array1.length;
const allSameLength = [array2, array3]
.every(({length}) => length === firstLength);
console.log(allSameLength);
答案 1 :(得分:2)
如果要检查其长度的数组存储在“父”数组中,则只需使用every
来检查迭代数组的length
是否与长度相同第一个。
示例:
const array = [
["a", "b", "c"],
[1, 2, 3],
[[1, 2], 3, "f"]
];
const equal = array.every((val, i, arr) => val.length === arr[0].length);
console.log(equal);
答案 2 :(得分:1)
初始化数组的数组,使用map对每个元素应用.length函数,然后返回数组的最小值和最大值是否相等。
您还可以只存储一个变量,该变量是您遇到的第一个数组长度,然后检查每个数组的长度是否与该数组相同。
我不确定JS中的min / max函数是对数组进行排序还是对数组进行O(n)搜索,但是第二种方法肯定是O(n)。
编辑:我想'every'函数也是O(n),但我不确定(如果更好,我会感到很惊讶,如果更糟,我会感到惊讶)。
答案 3 :(得分:0)
一旦找到一个长度与第一个数组不同的数组,就会知道它们的长度并不相同。否则,您只需检查.length
即可确定每个数组,因此不会比这快。
function checkLengths() {
var len = arguments[0].length;
for(var i = 1; i < arguments.length; i++) {
if(arguments[i].length != len) {
return false;
}
}
return true;
}
var arr1 = [0, 1, 2];
var arr2 = ['lala', 'ayy', 'whatup'];
var arr3 = ['what in the worlddddd'];
console.log('Same lengths:', checkLengths(arr1, arr2));
console.log('Same lengths:', checkLengths(arr1, arr2, arr3));
我不希望其他答案有明显不同...