Перед введением задайте вопрос: как объединить несколько массивов в один массив?
Следующие сеансы обмена разделены на следующие подразделы:
1. Основное введение в метод CONCAT
2. Почувствуйте метод Concat из примера
1. Основное введение в метод CONCAT
Метод CONCAT используется для слияния нескольких массивов. Он добавляет члена нового массива к концу оригинального массива, а затем возвращает новый массив, оригинальный массив остается неизменным.
console.log ([]. Concat ([1], [2], [3])); // [1, 2, 3] console.log ([]. Concat ([[1], [2], [3]])); // [1], [2], [3]] console.log ([]. Concat (4, [[5,6], [7]])); // [4, [5, 6], [7]]
В приведенном выше коде первое возвратное значение состоит в том, чтобы объединить пустой массив с тремя массивами [1], [2], [3] в массив, возвращаясь [1, 2, 3]. Второе-объединить пустой массив с двумерным номером. Члены двумерной массивы являются [1], [2], [3], поэтому [[1], [2], [3]] возвращаются. Обратите внимание, что возвращенный двухмерный массив. Третий пример тот же. Понимание концепций здесь очень важно, то есть добавить членов нового массива к хвосту оригинального массива.
В дополнение к принятию массивов в качестве параметров, Concat также может принимать другие типы значений в качестве параметров. Они будут использоваться в качестве новых элементов, добавляя конец массива.
console.log ([]. Concat (1,2,3)); // [1,2,3]; // эквивалентно console.log ([]. Concat (1, [2,3])); // [1,2,3]; console.log ([]. Concat ([1], [2,3])); // [1,2,3];
Хотя здесь меньше контента, он выглядит довольно просто. Но это действительно нелегко понять.
2. Почувствуйте метод Concat из примера
После разговора об основных знаниях, позвольте мне показать вам вопрос, с которым я недавно столкнулся. Оригинальное название такое.
Вы можете увидеть, что это значит, глядя на примеры.
Одним из решений этого вопроса является:
var flatten = function (arr) {return [] .concat.apply ([], arr);};Эта простая функция может реализовать функцию слияния элементов в массиве. Но когда я понимаю эту обратную ценность, возникает проблема.
Вопрос: Почему существует разница между использованием метода применения и не использованием метода применения?
console.log ([]. concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] console.log ([]. Concat ([[1], [2], [3]])); // [[1], [2], [3]]
В приведенном выше коде новый массив также добавляется в хвост в пустом массиве, и первый возвращается [1,2,3]. Второй-двухмерный массив.
После периода броски и погони я наконец понял разные причины.
Во -первых, когда мы называем метод экземпляра CONCAT в пустом массиве, мы передаем параметры в CONCAT и подталкиваем к концу массива. То есть пустой массив объединяется с самым внешним массивом прошедшего массива, а затем возвращается новый массив.
console.log ([]. Concat (1,2,3)); // [1, 2, 3] console.log ([]. Concat ([1], [2], [3])); // [1, 2, 3] console.log ([]. Concat ([[1], [2], [3]])); // [1], [2], [3]] console.log ([]. Concat ([[1], [2], [3]])); // [[1], [2], [3]]]]
В приведенном выше коде он постепенно изменяется от нескольких массивов на одномерные массивы, двухмерные массивы и трехмерные массивы.
В подробном объяснении и сводном статье вызовов, применения и методов связывания в JavaScript упоминается, что функция метода применения аналогична методу вызова, а также изменяет эту точку (область, в которой выполняется функция), а затем вызывает функцию в указанной области. Функция также будет выполнена немедленно. Единственное отличие состоит в том, что он получает массив в качестве аргумента, когда функция выполняется.
Первым параметром метода применения также является объект, на который он хочет указывать. Если установить на NULL или неопределенное или это, это эквивалентно определению глобального объекта. Второй параметр - это массив, и все члены массива используются в качестве параметров по очереди, и исходная функция передается при вызове. Параметры исходной функции должны быть добавлены один за другим в методе вызова, но в методе применения они должны быть добавлены в качестве массива.
console.log ([]. concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] console.log ([]. Concat ([[1], [2], [3]])); // [[1], [2], [3]]
Как видно из кода, первый кусок кода сначала вызывает метод CONCAT в пустого массива. Функция этого метода состоит в том, чтобы добавить членов нового массива к концу исходного массива. Метод применения снова вызывается, и первый параметр передается, указывая на область охвата выполняемого объекта. Функция второго параметра состоит в том, чтобы пройти все члены массива в виде параметров одновременно и передавать их в массив при вызове.
Следовательно, когда методы CONCAT и применения используются одновременно, будут наложены функции двух методов, что является другим явлением, чем использование одного CONCAT. Давайте посмотрим пример.
console.log ([]. Concat ([1,2,3])); // [1, 2, 3] console.log ([]. Concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] console.log ([]. Concat ([[1], [2], [3]])); // [1], [2, [3]] console.log ([]. Concat ([[1], [2], [3]])); // [[1], [2], [3]] console.log ([]. Concat ([[1], [2], [3]])); // [[1], [2], [3]] console.log ([]. Concat ([[1], [2], [3]]])); // [[1], [2], [3]] Console.log ([].. Concat ([[1], [2], [2], [3]]] console.log ([]. Concat.apply ([], [[[1], [2], [3]]]); // [1], [2], [2]]; [3]]]]
В приведенном выше коде метод CONCAT объединяет наибольшее количество чисел, а затем объединяет следующий массив слоев на основе слияния.
console.log ([]. concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] // эквивалентно console.log ([]. Concat (1,2,3)); // [1,2,3]
Суммировать:
1. При использовании только метода CONCAT члены нового массива будут добавлены к концу исходного массива.
2. При использовании метода применения для указания этого указателя метода CONCAT функции двух методов будут наложены.
3. Методы слияния элементов массива:
var flatten = function (arr) {return [] .concat.apply ([], arr);}; var flatten = function (array) {return array.reduce (function (a, b) {return a.concat (b);}, [])}Выше приведено метод слияния массивов с использованием метода CONCAT, введенного вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!