При работе с массивами часто возникает необходимость в разнообразных операциях для обработки данных. В этой статье, я поделюсь пятью наиболее полезными и часто используемыми методами, которые помогут вам легче и более эффективно работать с массивами. Эти методы могут быть особенно полезными при фильтрации, сортировке, преобразовании данных и многих других задачах.
Допустим, в гугл таблице есть телефонный справочник сотрудников с внутренними номерами:
Для того, чтобы получить справочник в массив гугл скриптов, запускаю следующий код:
function getInitialArray() {
const ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ARRAY METHODS')
return ws.getDataRange().getValues()
}
Скрипт вернет следующий результат в виде массива массивов:
1. Shift() — удаляет первый элемент массива или как избавиться от заголовков
Метод shift()
удаляет первый элемент из массива и возвращает его значение. Так же он изменяет длину массива — до выполнения метода и после.
function shiftArray() {
const initialArray = getInitialArray()
const shiftedElem = initialArray.shift()
console.log(shiftedElem)
console.log(initialArray)
}
С результатом:
2. Splice() — когда надо удалить элементы, начиная с определенной позиции
Допустим в нашем списке есть лишний контакт — [ 3, ‘Александра’, 250 ] и его надо удалить, не меняя весь остальной массив:
function spliceArray() {
const initialArray = getInitialArray()
console.log(initialArray)
initialArray.splice(3, 1)
console.log(initialArray)
}
initialArray.splice(3, 1)
удаляет 1 элемент с третьей позиции:
3. Filter() — когда надо собрать новый массив исходя из заданных условий
Метод filter() создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции. Чтобы было проще — из функции фильтр вызывается другая функция, результат которой является основой для фильтра:
К примеру, мне нужны все контакты, телефоны которых «больше» 600. Классическая запись будет следующей:
function filteredArray() {
const initialArray = getInitialArray()
console.log(initialArray)
const filteredArr = initialArray.filter(filterCondition)
console.log(filteredArr)
}
function filterCondition(row) {
return row[2] > 600
}
с результатом:
но можно сильно упростить код, благодаря стрелочной функции:
function filteredArray() {
const initialArray = getInitialArray()
console.log(initialArray)
const filteredArr = initialArray.filter(row => row[2] > 600)
console.log(filteredArr)
}
при этом, условий может быть несколько, например
const filteredArr = initialArray.filter(row => row[2] > 600 && row[0] > 14)
вернет:
4. Sort() — когда надо упорядочить массив
например, по возрастанию номеров телефонов:
function sortArray() {
const initialArray = getInitialArray()
initialArray.sort((a, b) => a[2] - b[2])
console.log(initialArray)
}
c результатом:
5. Map() — возвращает новый массив с необходимыми полями
К примеру, мне нужны те же данные, но без первого столбца с порядковыми номерами. С этой задачей проще всего справиться следующим образом:
function mapArray() {
const initialArray = getInitialArray()
const newArray = initialArray.map(row => [row[1], row[2]])
console.log(newArray)
}
с результатом:
Небольшой бонус для дочитавших до конца 🙂
Можно делать методы «цепочкой».
Например, упорядочивание только что созданного массива :
const newArray = initialArray.map(row => [row[1], row[2]]).sort((a, b) => a[1] - b[1])
позволит создать и сразу выстроить массив «по возрастанию»:
Ваше мнение важно и может улучшить блог
Я хочу услышать ваше мнение и ваши идеи о том, как сделать этот сайт еще лучше. Примите участие в опросе, чтобы поделиться вашими пожеланиями, предложениями и замечаниями. Пройдите опрос сейчас и помогите сделать этот сайт более полезным для вас!