Определение:
Метод Concat() объединяет два массива (например, ArrayA, ArrayB) и возвращает новый массив, содержащий объединенные элементы как ArrayA, так и ArrayB.
Параметры и возвращаемое значение:
Метод concat() вызывается для экземпляра массива, принимающего N значений или массивов в качестве аргументов.
Возвращаемое значение представляет собой недавно объединенный массив, содержащий начальные элементы массива объектов, за которыми следуют параметры, переданные в concat().
Например:
const arrayA = [1,2,3,4,5]; const arrayB = [6,7,8,9,10]; // Merging two arrays const arrayAB = arrayA.concat(arrayB); // Merging a single array and value const arrayAndOne = array.concat(1); // Merging a single array and multiple values const arrayAndValues = array.concat(1,2,3); // Merging a single array and a nested array const arrayAndNestedArrayB = arrayA.concat([arrayB]); console.log(arrayAB); // [1,2,3,4,5,6,7,8,9,10] console.log(arrayAndOne); // [1,2,3,4,5,1] console.log(arrayAndValues); // [1,2,3,4,5,1,2,3] console.log(arrayAndNestedArrayB); // [1,2,3,4,5,[6,7,8,9,10]]
Формат распространения ES2015:
ES2015 предлагает новый способ объединения массивов с использованием формата распространения. Как и в наших примерах ES5, возвращаемое значение представляет собой новый массив.
const arrayA = [1,2,3,4,5]; const arrayB = [6,7,8,9,10]; // Merging two arrays const arrayAB = [...arrayA, ...arrayB]; // Merging a single array and value const arrayAndOne = [...arrayA, 1]; // Merging a single array and multiple values const arrayAndValues = [...arrayA, 1, 2, 3]; // Merging a single array and a nested array const arrayAndNestedArrayB = [...arrayA, [...arrayB]]; console.log(arrayAB); // [1,2,3,4,5,6,7,8,9,10] console.log(arrayAndOne); // [1,2,3,4,5,1] console.log(arrayAndValues); // [1,2,3,4,5,1,2,3] console.log(arrayAndNestedArrayB); // [1,2,3,4,5,[6,7,8,9,10]]
Пример данных:
Здорово. Теперь, когда мы лучше понимаем, что делает метод concat(). Давайте проанализируем, как мы будем использовать его в реальном приложении.
Наши данные представляют собой единый объект состояния с массивом, содержащим несколько объектов сообщений в блоге. Он имеет следующие свойства:
- Заголовок
- Автор
- Комментарий
const state = { blogPosts: [ {"title": "I Love Programming", "Author": "Jose", "Comment": "Programming isn't easy"}, {"title": "Traveling Abroad", "Author": "Mike", "Comment": "Hire a Pilot"}, {"title": "Going to Space", "Author": "Sandra", "Comment": "Meet Elon Musk"}, {"title": "How to Make Money Online", "Author": "Cheryl", "Comment": "Sell Get Rich Quick Schemes"}, {"title": "How to Get Rich or Die Trying", "Author": "Sandy", "Comment": "Become a Rapper"}, ], }
Вызов:
Для нашего реального приложения мы храним массив сообщений блога в объекте состояния. Мы хотим, чтобы наш объект состояния оставался неизменным, и поэтому наш существующий массив сообщений в блоге не должен изменяться.
Если мы хотим добавить новый пост в существующий массив, нам нужно будет создать новый массив, объединяющий существующие блоги с новым, и назначить его объекту состояния.
- Создайте функцию addBlogPost, которая принимает объект состояния и объект записи блога. Он должен вернуть новую копию объекта состояния, содержащего объединенный массив сообщений блога.
function updateBlogPosts(state, post) { // Here we use the ES2015 spread operator to create a new copy of the state object. As you can imagine, it works similar to how we use it on an array. let newState = {...state}; // Merge existing blog posts with the new post and assign to the new state object. const newState.blogPosts = [...newState.blogPosts, post] return newState; }
2. Вызвать функцию addBlogPost с новым сообщением
3. Записать возвращаемое значение в консоль
const newBlogPost = { "Title": "I promise not to mutate your original state", Author: "Immutable", "Comment": "I really promise yo" }; console.log(updateBlogPosts(state, newBlogPost)); > [ { title: 'I Love Programming', Author: 'Jose', Comment: 'Programming isn\'t easy' }, { title: 'Traveling Abroad', Author: 'Mike', Comment: 'Hire a Pilot' }, { title: 'Going to Space', Author: 'Sandra', Comment: 'Meet Elon Musk' }, { title: 'How to Make Money Online', Author: 'Cheryl', Comment: 'Sell Get Rich Quick Schemes' }, { title: 'How to Get Rich or Die Trying', Author: 'Sandy', Comment: 'Become a Rapper' }, { Title: 'I promise not to mutate your original state', Author: 'Immutable', Comment: 'I really promise yo' } ]
Вывод:
Я надеюсь, вы лучше поняли, как использовать метод concat() в возможном реальном приложении. Если вам понравился этот урок, пожалуйста, хлопните несколько раз и ознакомьтесь с некоторыми другими моими статьями. До следующего раза, выздоравливайте :).