Кодирование: сведение массива в Javascript

Feb 18 2023
Сведение массива: Сведение массива означает получение массива, который может содержать вложенные массивы (т.е.

Сведение массива. Сведение массива означает получение массива, который может содержать вложенные массивы (т. е. массивы внутри массивов), и преобразование его в единый одномерный массив. Другими словами, он включает в себя удаление всех вложенных массивов и объединение их элементов в один массив.

Мы обсудим несколько решений.

Решение 1. Использование рекурсии

Сгладить массив

Код определяет вызываемую функцию FlattenArray, которая принимает массив в качестве аргумента. Цель функции — взять вложенный массив и вернуть его сглаженную версию. Например, если введено значение [1, 2, [3, 4]], функция должна вернуть значение [1, 2, 3, 4].

Функция начинается с создания вызываемого пустого массива, который будет использоваться для хранения сглаженной версии входного массива. Затем он входит в forцикл, который будет перебирать каждый элемент входного массива.

Для каждого элемента входного массива функция проверяет, является ли сам элемент массивом, используя метод Array.isArray. Если элемент является массивом, функция рекурсивно вызывает себя с вложенным массивом в качестве аргумента и использует метод concatдля объединения сплющенного вложенного массива с тем flatArray, который был создан в начале функции.

Если элемент не является массивом, функция просто помещает элемент в flatArray.

После обработки всех элементов входного массива функция возвращает значение flatArray.

Полный код:

// Flatten Array
function FlattenArray(arr) {
  var flatArray = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatArray = flatArray.concat(FlattenArray(arr[i]))
    } else {
      flatArray.push(arr[i])
    }
  }
  return flatArray
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))

Решение 2. Использование метода уменьшения

function flattenArray(arr) {
  return arr.reduce(function(flatArray, current) {
    if (Array.isArray(current)) {
      return flatArray.concat(flattenArray(current));
    } else {
      return flatArray.concat(current);
    }
  }, []);
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

Метод reduceпринимает два аргумента: функцию обратного вызова и начальное значение для аккумулятора. В этом случае аккумулятор представляет собой пустой массив, который будет использоваться для построения сглаженной версии входного массива.

Функция обратного вызова принимает два аргумента: текущее обрабатываемое значение (которым по очереди будет каждый элемент входного массива) и текущее значение аккумулятора.

Внутри функции обратного вызова мы проверяем, является ли текущее значение массивом, используя Array.isArray. Если это массив, мы вызываем flattenArrayрекурсивно, чтобы сгладить вложенный массив, а затем сцепить сплющенный массив с аккумулятором, используя метод concat.

Если текущее значение не является массивом, мы просто объединяем его с аккумулятором, используя concat.

Наконец, reduceметод возвращает окончательное значение аккумулятора, которое будет сглаженной версией входного массива.

С помощью этого кода вы должны получить тот же результат, что и раньше: [1, 2, 3, 4, 5, 6, 7, 8, 9].

Если вы хотите узнать больше о программировании на Javascript, обязательно подпишитесь на меня, чтобы получить дополнительные фрагменты кода и примеры. Я буду делиться ценной информацией и советами о том, как освоить язык и улучшить свои навыки разработчика. Итак, следите за обновлениями, и давайте продолжим учиться вместе.

Спасибо за чтение. Приятного обучения

Объяснение многопоточности и многопроцессорности в Python Самый простой способ доступа к базе данных в JAVA Наиболее часто задаваемый вопрос на собеседовании на основе Java8 Stream — часть 1 Apache Maven — кратко