Полезный? да. Нужный? Иногда. Должны ли вы их знать? Абсолютно.
Что такое методы JavaScript?
JavaScript — один из самых гибких и широко используемых языков программирования, поэтому неудивительно, что существует множество (ха-ха) методов, которые вы можете использовать для строк, массивов и объектов!
Методы JS являются встроенными и поэтому могут использоваться в любом экземпляре массива, если вы создали их с некоторыми полезными элементами! Следующий синтаксис показывает, как вы вызываете метод в массиве:
someArray.nameOfMethod() // pseudocode
В большинстве случаев методы массива имеют внутри функцию обратного вызова, что делает их по-настоящему мощными, как мы увидим ниже.
Методы
Этот список ни в коем случае не является окончательным, это просто мое скромное мнение, основанное на моем опыте изучения JS. Эти методы помогли сделать мою жизнь намного проще и сократить количество кода, который я написал! (за петлями смотрю на тебя! 👀)
.includes()
.includes() — один из самых простых методов, но пусть вас это не смущает. Это может пригодиться, когда вы выполняете какую-то проверку или сравнение в своем коде. Этот метод ищет в массиве определенное значение, а затем возвращает true
или false
. Возврат: логическое значение
const numbers = [1, 2, 3]; const strings = ["hello", "world"]; numbers.includes(1) // returns true numbers.includes(4) // returns false numbers.includes(2, 1) // search for 2 from index 1. returns true numbers.includes(1, 2) // search for 1 from index 2. returns false strings.includes("hello") // returns true strings.includes("javascript") // returns false
.forEach()
.forEach() значительно упрощает жизнь, перебирая весь массив и предоставляя вам доступ к каждому отдельному элементу. Это достигается с помощью функции обратного вызова . Однако, и я обнаружил это на собственном горьком опыте, метод .forEach() возвращает undefined
. Это важно, потому что присвоение вывода метода и попытка сделать что-либо с ним может привести к слезам. Обратите внимание, что .forEach() не мутирует массив, для которого он вызывается, а также не является цепочкой. Возврат:undefined
const someArray = [1, 2, 3]; someArray.forEach(element => console.log(element + 5)); // output -> 6 // output -> 7 // output -> 8 someArray.forEach((element, idx) => console.log(element + 5, idx)); // output -> 6 0 // output -> 7 1 // output -> 8 2
.map()
Это один из моих любимых и, вероятно, наиболее часто используемый метод. React amirite? Подобно .forEach(), .map() перебирает весь массив и дает вам доступ к каждому элементу. Основное отличие состоит в том, что .map() создает новый массив с результатами некоторой пользовательской логики в функции обратного вызова. Это очень полезно, потому что вы можете назначить вывод новой переменной и вызывать для нее другие методы. Вот почему карта может быть цепочкой. Обратите внимание, что карта не изменяет массив, для которого она вызывается. Возврат: массив
const someArray = [3, 6, 9]; const newArray = someArray.map(element => element * 5); console.log(newArray); // output -> [15, 30, 45] const anotherArray = newArray.map((element, idx) => { console.log(idx); return element + 1 } // output -> 0 // output -> 1 // output -> 2 console.log(anotherArray) // output -> [16, 31, 46]
.filter()
Если вы еще не использовали .filter(), попробуйте немедленно. Это еще один суперполезный метод, без которого вы в конечном итоге не сможете жить. Подобно .map(), он создает новый массив со всеми элементами, которые прошли условие, заданное с помощью функции обратного вызова. Даже базовое понимание (как у меня) этого метода может помочь вам решить множество проблем. Возврат: массив
const numbers = [20, 10, 30]; const words = ["hello", "world", "learn", "javascript"]; const filteredNum = numbers.filter(number => number >= 20); console.log(filteredNum); // output -> [20, 30] const filteredWords = words.filter(word => word.length > 5); console.log(filteredWords); // output -> ["javascript"];
.reduce()
.reduce() — это один из методов массива, который сложнее понять, но как только вы узнаете, как он работает, у него есть несколько вариантов использования, в которых на самом деле нет любой другой вариант. Как следует из названия метода, он уменьшает массив и возвращает одиночноезначениекаждый раз, обычно целое число или объект JS. Это достигается с помощью функции редуктора, которая выполняется методом reduce(). Возврат: объект/целое число
Вот некоторые ключевые термины: accumulator
,currentValue
,initialValue
. accumulator
— это промежуточная сумма, так как текущий массив зацикливается. currentValue
— это значение элемента, в котором временно находится цикл. initialValue
дается методу как отправная точка для accumulator
. Давайте посмотрим на это в действии:
const numbersAgain = [1, 2, 3, 4, 5]; const initialValue = 0; const reducer = (accumulator, currentValue) => { console.log("acc is " + accumulator + " current value is " + currentValue); return accumulator + currentValue } const sum = numbersAgain.reduce(reducer, initialValue); // output -> acc is 0 current value is 1 // output -> acc is 1 current value is 2 // output -> acc is 3 current value is 3 // output -> acc is 6 current value is 4 // output -> acc is 10 current value is 5 console.log(sum); // output -> 15
Вывод
Как видите, всего лишь 5 методов могут помочь вам решить столько проблем. Есть масса других методов, о которых я не упомянул, но если вам интересно, заходите на MDN. Вы обнаружите, что это незаменимый ресурс для того, чтобы узнать больше о том, на что способны методы, упомянутые в этой статье, и увидеть, насколько мощными являются встроенные методы.
Считаете ли Вы это полезным? Оставьте комментарий, упомянув хотя бы одну небольшую вещь, которую вы узнали, или дайте мне знать что-нибудь важное, что я, возможно, пропустил. Продолжайте учиться!