简单阵列地图问题 - JavaScript



我的JavaScript程序有一个简单的问题。问题是当我尝试映射嵌套数组的长度时,最后一个数组被排除在外。

// the length doesnt matter, its N number of arrays
var exampleArray = [ [nested array], ..., [nested array] ];
function findArrayLengths() {
  var arrayLengths = exampleArray.map(function(x) {
    return x.length; });
  return arrayLengths; }

我的问题是,我很明显。还是理论上不应该产生一个包含所有嵌套数组的长度的新数组?

您可以这样做。您需要递归地将阵列固定。

我正在考虑由嵌套数组嵌套,您的意思是嵌套数组可以是任何深度。

var exampleArray = [ [1,2,3,4], [1,2,[1,2,3]], [1,2,3,4,5,[1,2,3,4,[1,2,3,4]]] ];
function findArrayLengths(input) {
  return input.reduce((op,cur)=>{
    return Array.isArray(cur) ? op.concat(findArrayLengths(cur)) : op.concat(cur)
  },[])
}
let op = exampleArray.map(e=>{
  return findArrayLengths(e).length
})
console.log(op);

还有另一种方法来使用array.prototype.flat。似乎效果很好。,但很高兴知道这是否是从任何经验丰富的JS开发人员那里做的好方法。

var arr = [ [1,2,3,4], [1,2,[1,2,3]], [1,2,3,4,5,[1,2,3,4,[1,2,3,4]]], [[1,2,3,4], [1,2,[1,2,3]], [1,2,3,4,5,[1,2,3,4,[1,2,3,4]]]] ];
let op = arr.map(e=> e.flat(Infinity).length);

最新更新