Как старшему разработчику, я обнаружил, что трудно подготовиться к интервью в реальном времени, и при поиске в Google или ChatGPT я не смог найти полный список, который охватывает все служебные функции в JavaScript, поэтому здесь я создаю список служебных функций, которые могут помочь от младших до старших разработчиков.

1. Удалить дубликаты из массива

  • Массивы: это несколько удобных методов, которые мы можем использовать для удаления дубликатов из массива.
  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. Удалить дубликаты из массива объектов

  • Массивы объектов. Это несколько удобных методов, которые мы можем использовать для удаления дубликатов из массива объектов.
  1. Использование 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. Найдите элемент в массиве

  • Ниже приведены некоторые методы поиска элемента в массиве.
  1. 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 .