Как старшему разработчику, я обнаружил, что трудно подготовиться к интервью в реальном времени, и при поиске в Google или ChatGPT я не смог найти полный список, который охватывает все служебные функции в JavaScript, поэтому здесь я создаю список служебных функций, которые могут помочь от младших до старших разработчиков.
1. Удалить дубликаты из массива
- Массивы: это несколько удобных методов, которые мы можем использовать для удаления дубликатов из массива.
- Использование lodash
let array = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let arrayuniq = _.uniq(array);//[2, 1, 5, 6, 7, 8, 9, 10]
2. Использование фильтра
let array = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let list = array.filter((x, i, a) => a.indexOf(x) == i); //[2, 1, 5, 6, 7, 8, 9, 10]
3. Использование набора
let array = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let setuniq = [...new Set(array)]; //[2, 1, 5, 6, 7, 8, 9, 10]
2. Удалить дубликаты из массива объектов
- Массивы объектов. Это несколько удобных методов, которые мы можем использовать для удаления дубликатов из массива объектов.
- Использование lodash
let users = [{ id: 1, name: "ted" },{ id: 1, name: "bob" },{ id: 3, name: "sara" },{ id: 4, name: "test" },{ id: 4, name: "test" },{ id: 5, name: "abc" }]; let uniqueUsersByID = _.uniqBy(users, "id"); //[{"id":1,"name":"ted"},{"id":3,"name":"sara"},{"id":4,"name":"test"},{"id":5,"name":"abc"}]
С помощью этого кода мы можем проверять уникальные данные с несколькими свойствами.
const uniquewithMultipleProperties = _.uniqWith( users, (a, b) => a.id === b.id || a.name === b.name ); //[{"id":1,"name":"ted"},{"id":3,"name":"sara"},{"id":4,"name":"test"},{"id":5,"name":"abc"}]
2. Использование фильтра
let filteruniquebyID = users.filter( (v, i, a) => a.findIndex(t => t.id === v.id) === i ); //[{"id":1,"name":"ted"},{"id":3,"name":"sara"},{"id":4,"name":"test"},{"id":5,"name":"abc"}]
С помощью этого кода мы можем проверять уникальные данные с несколькими свойствами.
let filteruniquebyIDName = users.filter( (v, i, a) => a.findIndex(t => t.id === v.id || t.name === v.name) === i ); //[{"id":1,"name":"ted"},{"id":3,"name":"sara"},{"id":4,"name":"test"},{"id":5,"name":"abc"}]
3. Использование набора
var set1 = Array.from(users.reduce((m, t) => m.set(t.id, t), new Map()).values()); //[{"id":1,"name":"bob"},{"id":3,"name":"sara"},{"id":4,"name":"test"},{"id":5,"name":"abc"}]
Вы можете проверить StackBlitz здесь.
https://stackblitz.com/edit/remove-duplicates-arrayofobjects
3. Найдите элемент в массиве
- Ниже приведены некоторые методы поиска элемента в массиве.
- includes: этот метод определяет, содержит ли массив определенное значение среди своих элементов, возвращая
true
илиfalse
в зависимости от ситуации.
console.log(array.includes(2)); // returns true
2. каждый: этот метод проверяет, все ли элементы в массиве проходят тест, реализованный предоставленной функцией. Он возвращает логическое значение.
let testevery1 = array.every(val=> val>3); //false
3. some: этот метод проверяет, проходит ли хотя бы один элемент в массиве проверку, реализованную предоставленной функцией. Он возвращает логическое значение.
let testsome1 = array.some(val=> val>3); //true
4.lodash включает: проверяет, находится ли value
в collection
. Возвращает true
, если найдено value
, иначе false
.
let lodashtest9 =_.includes(array, 1); // true let lodashtest10 =_.includes(array, 3, 2); // false
5. findIndex:этотметод возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной функции проверки. . В противном случае он возвращает -1
, указывая на то, что ни один элемент не прошел тест.
let testindex = array.findIndex(val => val > 1); //0
6.find: этот метод возвращает значение первого элемента в предоставленном массиве, который удовлетворяет предоставленной функции проверки. Если никакие значения не удовлетворяют функции тестирования, возвращается undefined
.
let testfind = array.find(el => (el > 2)); //5
7. фильтр:этотметод создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.
let testfilter1 = array.filter(val=> val>3); //[5, 6, 7, 8, 9, 9, 10]
8. map: этот метод создает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.
let val = []; array.map(item => { if(item >= 3) val.push(item); }); //[5, 6, 7, 8, 9, 9, 10]
Вы можете проверить StackBlitz здесь.
https://stackblitz.com/edit/find-item-array
4. Найдите элемент в массиве объектов
- Это методы, которые можно использовать для поиска элемента в массиве объектов.
1. каждый: этот метод проверяет, все ли элементы в массиве проходят тест, реализованный предоставленной функцией. Он возвращает логическое значение.
let testevery2 = users.every(val=> val.id>3); //false
2. some: этот метод проверяет, проходит ли хотя бы один элемент в массиве проверку, реализованную предоставленной функцией. Он возвращает логическое значение.
let testsome2 = users.some(val=> val.id>3); //true
3.lodash включает: проверяет, находится ли value
в collection
. Возвращает true
, если найдено value
, иначе false
.
let lodashtest11 =_.includes({ 'a': 1, 'b': 2 }, 1); //true let lodashtest12 =_.includes('abcd', 'bc'); //true
4. findIndex:этотметод возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной функции проверки. . В противном случае он возвращает -1
, указывая на то, что ни один элемент не прошел тест.
let testindex2 = users.findIndex(val => val.id > 1); //3
5.find: этот метод возвращает значение первого элемента в предоставленном массиве, который удовлетворяет предоставленной функции проверки. Если никакие значения не удовлетворяют функции тестирования, возвращается undefined
.
let testfind2 = users.find(el => (el.id > 2)); //{"id":3,"name":"sara"}
6. фильтр:этотметод создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.
let testfilter2 = users.filter(val=> val.id>3);
7. map: этот метод создает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.
let val2 = []; users.map(item => { if(item.id >= 3) val2.push(item); });
Вы можете проверить StackBlitz здесь.
https://stackblitz.com/edit/find-item-array
5. Сортировка элементов массива
Массивы можно сортировать с помощью метода sort.
Метод sort()
сортирует элементы массива на месте и возвращает отсортированный массив. Порядок сортировки по умолчанию — восходящий, основанный на преобразовании элементов в строки и последующем сравнении их последовательностей значений кодовых единиц UTF-16.
const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); // expected output: Array ["Dec", "Feb", "Jan", "March"] const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); // expected output: Array [1, 100000, 21, 30, 4]
6. Сортировка массива объектов по определенным свойствам
- Это методы, которые можно использовать для сортировки массива объектов с использованием определенных свойств объектов.
1. Простая сортировка:этот метод сортирует элементы массива на месте и возвращает отсортированный массив.
let data = [{ id: "3", city: "toronto", state: "TR", zip: "75201", price: "123451" }, { id: "1", city: "anand", state: "AN", zip: "94210", price: "345678" }, { id: "5", city: "sudbury", state: "SB", zip: "00110", price: "789045" } ]; let sorttest2 = data.sort((a, b) => (a.id < b.id ? -1 : Number(a.id > b.id)));console.log("sort test 2 ", sorttest2); //output { "id": "1", "city": "anand", "state": "AN", "zip": "94210", "price": "345678" }, { "id": "3", "city": "toronto", "state": "TR", "zip": "75201", "price": "123451" }, { "id": "5", "city": "sudbury", "state": "SB", "zip": "00110", "price": "789045" }]
2. localCompare: этот метод возвращает число, указывающее, идет ли ссылочная строка до или после или совпадает с данной строкой в порядке сортировки.
let sorttest2 = data.sort((a, b) => (a.id < b.id ? -1 : Number(a.id > b.id))); //output [{ "id": "1", "city": "anand", "state": "AN", "zip": "94210", "price": "345678" }, { "id": "3", "city": "toronto", "state": "TR", "zip": "75201", "price": "123451" }, { "id": "5", "city": "sudbury", "state": "SB", "zip": "00110", "price": "789045" }]
3. Сортировка по нескольким полям
Функция parseInt()
анализирует строковый аргумент и возвращает целое число указанного основания счисления (основания в математических системах счисления).
let sorttest4 = data.sort(function(left, right) { var city_order = left.city.localeCompare(right.city); var price_order = parseInt(left.price) - parseInt(right.price); return city_order || -price_order; }); //output [{ "id": "1", "city": "anand", "state": "AN", "zip": "94210", "price": "345678" }, { "id": "5", "city": "sudbury", "state": "SB", "zip": "00110", "price": "789045" }, { "id": "3", "city": "toronto", "state": "TR", "zip": "75201", "price": "123451" }]
4. Lodash _sortBy: создает массив элементов, отсортированных в порядке возрастания по результатам выполнения каждого элемента в коллекции на каждой итерации.
let sorttest6 = _.sortBy(data, ["id", "city"]); //output [{ "id": "1", "city": "anand", "state": "AN", "zip": "94210", "price": "345678" }, { "id": "3", "city": "toronto", "state": "TR", "zip": "75201", "price": "123451" }, { "id": "5", "city": "sudbury", "state": "SB", "zip": "00110", "price": "789045" }]
7. Сортировка массива дат
1. Использование сортировки
let isDescending = false; //set to true for Descending let dates = ["1/7/2021", "1/6/2021", "8/18/2020", "8/6/2020"]; let sorteddates = dates.sort((a, b) => isDescending ? new Date(b).getTime() - new Date(a).getTime() : new Date(a).getTime() - new Date(b).getTime()); console.log(sorteddates); //["8/6/2020", "8/18/2020", "1/6/2021", "1/7/2021"]
2. Использование Лодаша
let arr = [{ name: "test1", date: "1/7/2021" }, { name: "test2", date: "1/6/2021" }, { name: "test3", date: "1/5/2020" } ]; arr = _.sortBy(arr, function(dateObj) { return new Date(dateObj.date); }); console.log("sort date", arr); //[{"name":"test3","date":"1/5/2020"},{"name":"test2","date":"1/6/2021"},{"name":"test1","date":"1/7/2021"}]
3. Использование Lodash (сортировка по месяцам и годам)
let yearAndMonth = [ { "year": 2016, "month": "FEBRUARY" }, { "year": 2015, "month": "MARCH" }, { "year": 2021, "month": "JANUARY" }, { "year": 2021, "month": "FEBRUARY" } ] let value= _.sortBy(yearAndMonth, a => new Date(1 + a.month + a.year)); console.log('Sorted Result: ', value); //[{"year":2015,"month":"MARCH"},{"year":2016,"month":"FEBRUARY"},{"year":2021,"month":"JANUARY"},{"year":2021,"month":"FEBRUARY"}]
Вы можете проверить StackBlitz здесь.
https://stackblitz.com/edit/sort-array
8. Удалить элемент из массива
1. pop:этот метод удаляет последний элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.
let arraypoptest = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10];let testpop = arraypoptest.pop(); console.log("array pop", testpop,"-", arraypoptest); //10 - [2, 1, 2, 5, 6, 7, 8, 9, 9];
2. shift:этот метод удаляет первый элемент из массива и возвращает этот удаленный элемент. Этот метод изменяет длину массива.
let arrayshifttest = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let testshift = arrayshifttest.shift(); console.log("array shift", testshift,"-", arrayshifttest); //2 - [1, 2, 5, 6, 7, 8, 9, 9, 10]
3. slice: этот метод возвращает неглубокую копию части массива в новый объект массива, выбранный от start
до end
(end
не включено), где start
и end
представляют индексы элементов в этом массиве. Исходный массив не будет изменен.
let arrayslicetest = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let testslice = arrayslicetest.slice(0, 3); console.log("array slice", testslice, arrayslicetest); //not changed original array //[2, 1, 2] - [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]
4. splice:этот метод изменяет содержимое массива, удаляя или заменяя существующие элементы и/или добавляя новые элементы на место.
let arraysplicetest = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let testsplice = arrayslicetest.splice(0, 3); //[2, 1, 2]
5. фильтр:этот метод создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.
массивы:
let testarr = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let testarr2 = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let filtered = testarr.filter(function(value, index, arr) { return value > 5; }); let filtered2 = testarr2.filter(item => item !== 2); console.log("filter example 1", filtered); //[6, 7, 8, 9, 9, 10] console.log("filter example 2", filtered2); //[1, 5, 6, 7, 8, 9, 9, 10]
- фильтр с удалением нескольких значений:
let forDeletion = [2, 3, 5]; let mularr = [1, 2, 3, 4, 5, 3]; mularr = mularr.filter(item => !forDeletion.includes(item)); console.log("multiple value deletion with filter", mularr); //[1, 4]
6. оператор удаления:JavaScript delete
удаляет свойство из объекта; если больше нет ссылок на одно и то же свойство, оно в конечном итоге освобождается автоматически.
let ar = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; delete ar[4]; // delete element with index 4 console.log(ar); //[2, 1, 2, 5, undefined, 7, 8, 9, 9, 10]
7. lodash remove:_remove
удаляет все элементы из array
, для которых predicate
возвращает истину, и возвращает массив удаленных элементов.
let arrlodashtest = [2, 1, 2, 5, 6, 7, 8, 9, 9, 10]; let evens = _.remove(arrlodashtest, function(n) { return n % 2 == 0; }); console.log("lodash remove array", arrlodashtest); //[1, 5, 7, 9, 9]
9. Удалить элемент из массива объектов
1. pop:этот метод удаляет последний элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.
let users1 = [{ id: 1, name: "ted" }, { id: 2, name: "mike" }, { id: 3, name: "bob" }, { id: 4, name: "sara" }]; let testpop1 = users1.pop(); console.log( "array of objects pop", JSON.stringify(testpop1),"-" JSON.stringify(users1) ); //{"id":4,"name":"sara"} - [{"id":1,"name":"ted"},{"id":2,"name":"mike"},{"id":3,"name":"bob"}]
2. shift:этот метод удаляет первый элемент из массива и возвращает этот удаленный элемент. Этот метод изменяет длину массива.
let users2 = [{ id: 1, name: "ted" },{ id: 2, name: "mike" },{ id: 3, name: "bob" },{ id: 4, name: "sara" }]; let testshift1 = users2.shift(); console.log("array of objects shift", JSON.stringify(testshift1),"-", JSON.stringify(users2)); //{"id":1,"name":"ted"} - [{"id":2,"name":"mike"},{"id":3,"name":"bob"},{"id":4,"name":"sara"}]
3. slice: этот метод возвращает неглубокую копию части массива в новый объект массива, выбранный от start
до end
(end
не включено), где start
и end
представляют индексы элементов в этом массиве. Исходный массив не будет изменен.
let users3 = [{ id: 1, name: "ted" },{ id: 2, name: "mike" },{ id: 3, name: "bob" },{ id: 4, name: "sara" }]; let testslice1 = users3.slice(0, 3); console.log("array of objects slice", JSON.stringify(testslice1)); //not changed original array //[{"id":1,"name":"ted"},{"id":2,"name":"mike"},{"id":3,"name":"bob"}]
4. splice:этот метод изменяет содержимое массива, удаляя или заменяя существующие элементы и/или добавляя новые элементы на место.
let users4 = [ { id: 1, name: "ted" },{ id: 2, name: "mike" },{ id: 3, name: "bob" },{ id: 4, name: "sara" } ]; let testspice1 = users3.splice(0, 3); console.log("array of objects splice", JSON.stringify(testsplice)); //[{"id":1,"name":"ted"},{"id":2,"name":"mike"},{"id":3,"name":"bob"}]
5. фильтр:этот метод создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.
let users7 = [{ id: 1, name: "ted" },{ id: 2, name: "mike" },{ id: 3, name: "bob" },{ id: 4, name: "sara" }]; let filterObj = users7.filter(item => item.id !== 2); console.log("filter example array of objects", filterObj); //[{"id":1,"name":"ted"},{"id":3,"name":"bob"},{"id":4,"name":"sara"}]
6. lodash remove:_remove
удаляет все элементы из array
, для которых predicate
возвращает истину, и возвращает массив удаленных элементов.
let users8 = [ { id: 1, name: "ted" },{ id: 2, name: "mike" },{ id: 3, name: "bob" },{ id: 4, name: "sara" }]; let evensObj = _.remove(users8, function(n) { return n.id % 2 == 0; }); console.log("lodash remove array of object", JSON.stringify(evensObj)); //[{"id":2,"name":"mike"},{"id":4,"name":"sara"}]
Вы можете проверить StackBlitz здесь.
https://stackblitz.com/edit/array-remove-item
10. Найдите количество символов из заданной строки в массиве
1. Метод сопоставления строк
Метод match()
извлекает результат сопоставления строки с регулярным выражением. (источник: МДН)
const test1 = ("atit patel".match(/a/g)||[]).length console.log(test1); //2
2. Метод разделения строк
Метод split()
делит String
на упорядоченный список подстрок, помещает эти подстроки в массив и возвращает массив.
const test2 ="atit patel".split("a").length-1 console.log(test2); //2
3. метод indexOf
Метод indexOf()
возвращает индекс в вызывающем объекте String
первого вхождения указанного значения, начиная поиск с fromIndex
. Возвращает -1
, если значение не найдено.
let stringsearch = "a" ,str = "atit patel"; for(var count=-1,index=-2; index != -1; count++,index=str.indexOf(stringsearch,index+1) ); console.log(count); //2
4. метод фильтрации
Метод filter()
создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.
const mainStr = 'atit patel'; const test3 = [...mainStr].filter(l => l === 'a').length; console.log(test3); //2
5. метод уменьшения
Метод reduce()
выполняет функцию reducer (которую вы предоставляете) для каждого элемента массива, в результате чего получается одно выходное значение.
const mainStr1 = 'atit patel'; const test4 = [...mainStr1].reduce((a, c) => c === 'a' ? ++a : a, 0); console.log(test4); //2
В части-2 опубликуем больше полезностей, следите за обновлениями!
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .