Выпуск простой карты массивов - 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; }

У меня вопрос, есть ли что-то очевидное, что я упускаю. Или этот код теоретически не должен создавать новый массив, который содержит длины всех вложенных массивов?

1 ответ

Вы можете сделать это так. Вам нужно выровнять массив рекурсивно.

Я рассматриваю вложенный массив, то есть вложенный массив может быть любой глубины.

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 здесь на SO.

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);

Другие вопросы по тегам