编写接受数组并返回该数组的多维度的函数的最有效和/或最可读的方法是什么。现在可以假设数组只包含原始类型。
例子。
var arr = [[1,2],[3,4],[5,6]]
function findDim(a){
//logic goes here
}
findDim(arr); // returns 2
最佳答案
使用递归和 Array.isArray
检查元素是否为数组的方法。
var arr = [
[1, 2],
[3, 4],
[5, 6]
];
function findD(arr) {
// check the element is an array then do
// recursion to check it's element
if (Array.isArray(arr)) {
return 1 + findD(arr[0]);
}
// else return `0` since it's not
// a nested array
return 0;
}
console.log(findD(arr));
仅供引用:对于较旧的浏览器,请检查 polyfill option of Array.isArray
method .
更新: 如果它包含不同维度的数组,并且您想获得更深的维度,请使用 Array#map
和 Math.max
方法。
var arr = [
[1, 2],
[3, 4],
[5, [6]]
];
function findD(arr) {
// return 0 if not array else return the max value
// by finding all elements dimension
return Array.isArray(arr) ?
// generate the dimension value array
1 + Math.max.apply(Math, arr.map(findD)) : 0;
}
console.log(findD(arr));
或者用 Array#reduce
获取最大值的方法。
var arr = [
[1, 2],
[3, [4,[[3]]]],
[5, [6]]
];
function findD(arr) {
// return 0 if not array else return the max value
// by finding all elements dimension
return Array.isArray(arr) ? 1 + arr.reduce(function(a, b) {
// get the largest by comparing all the adjuscent
// elements dimension
return Math.max(a, findD(b));
}, 0) : 0;
}
console.log(findD(arr));
关于javascript - 查找 javascript 数组的维数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39233251/