Существует множество библиотек javascript, необходимых для разработки веб-приложений, но мне больше всего нравится lodash.

Я начал программировать на javascript с помощью фреймворка React для нашего операционного портала, где нам приходилось иметь дело с огромными наборами данных, поступающими из разных серверных служб. Требуется много взаимосвязи данных и искажение данных, чтобы они могли отображаться в виде таблиц, а также в графической форме с использованием графики d3.

Основная библиотека, которая приходит мне на помощь, — это lodash, которая может нарезать и нарезать данные нужным образом без хлопот, связанных с многократным кодированием условий и циклов. Простота библиотеки делает ваш код элегантным.

Lodash упрощает нашу работу при работе с огромным набором массивов, чисел, объектов, строк и т. д. Он очень полезен в

- перебор массивов, объектов и строк
- обработка и проверка значений
- создание составных функций

Lodash предлагает множество API. Но я перечислил наиболее часто используемые API в моем случае и надеюсь, что он будет полезен и для большинства ваших нужд. Создал сниппеты с образцами данных и в конце поделился на них постером mindmap.

Пример набора данных.

import _ from 'lodash'

//out sample data
const studentList = [
    { id: 1, name: 'John', age: 10 },
    { id: 2, name: 'Jane', age: 11 },
    { id: 3, name: 'Bob', age: 12 },
    { id: 4, name: 'Alice', age: 10 },
    { id: 5, name: 'Pete', age: 11 },
];

Список API

_.keyBy(studentList, ‘id’) — возвращает карту объектов с идентификатором в качестве ключа

# Output

{
    '1': { id: 1, name: 'John', age: 10 },
    '2': { id: 2, name: 'Jane', age: 11 },
    '3': { id: 3, name: 'Bob', age: 12 },
    '4': { id: 4, name: 'Alice', age: 10 },
    '5': { id: 5, name: 'Pete', age: 11 }
}

_.groupBy(studentList, ‘age’) — группирует объекты в массивы по возрасту.

# Output

{
    '10': [
        { id: 1, name: 'John', age: 10 },
        { id: 4, name: 'Alice', age: 10 }
    ],
    '11': [
        { id: 2, name: 'Jane', age: 11 },
        { id: 5, name: 'Pete', age: 11 }
   ],
   '12': [{ id: 3, name: 'Bob', age: 12 }]
}

_.filter(studentList, obj =› obj.age ‹ 12) — отфильтровывает объект, соответствующий условию. В этом случае он возвращает список учеников, чей возраст меньше 12 лет.

# Output

[
    { id: 1, name: 'John', age: 10 },
    { id: 2, name: 'Jane', age: 11 },
    { id: 4, name: 'Alice', age: 10 },
    { id: 5, name: 'Pete', age: 11 }
]

_.orderBy(studentList, [‘name’], [‘asc’]) — возвращает отсортированный массив объектов на основе имени в порядке возрастания.

# Output

[
    { id: 4, name: 'Alice', age: 10 },
    { id: 3, name: 'Bob', age: 12 },
    { id: 2, name: 'Jane', age: 11 },
    { id: 1, name: 'John', age: 10 },
    { id: 5, name: 'Pete', age: 11 }
]

_.uniqBy(studentList, ‘age’) — возвращает уникальный массив объектов в зависимости от их возраста. Если у нас есть несколько совпадающих объектов, будет возвращен тот, что вверху.

# Output

[
    { id: 1, name: 'John', age: 10 },
    { id: 2, name: 'Jane', age: 11 },
    { id: 3, name: 'Bob', age: 12 }
]

_.map(studentList, ‘name’) — возвращает массив имен путем перебора коллекции. Второй параметр также может принимать функцию для перебора массива объектов.

# Output

 ['John', 'Jane', 'Bob', 'Alice', 'Pete']

_.sortBy(studentList, ‘name’) — возвращает отсортированный массив объектов на основе имени.

# Output

[
    { id: 4, name: 'Alice', age: 10 },
    { id: 3, name: 'Bob', age: 12 },
    { id: 2, name: 'Jane', age: 11 },
    { id: 1, name: 'John', age: 10 },
    { id: 5, name: 'Pete', age: 11 }
]

_.without(_.map(studentList, ‘имя’), ‘Боб’) — возвращает массив имен, исключая «Боб».

# Output

['John', 'Jane', 'Alice', 'Pete']
let displayAge = (obj) => {
console.log(obj.name, " age is ", obj.age)
}

_.each(studentList, displayAge) — перебор массива объектов с помощью указанной выше функции.

# Output

John  age is  10
Jane  age is  11
Bob  age is  12
Alice  age is  10
Pete  age is  11

_.sample(_.map(studentList, ‘name’)) — возвращает случайное имя из списка имен.

# Output

Jack

_.sampleSize(_.map(studentList, ‘name’), 2) — возвращает случайный массив имен размера 2 из заданного массива имен.

# Output

 [ 'Bob', 'Jack' ]

_.values(studentList[0]) — возвращает массив значений заданного объекта.

# Output

[1, 'John', 10]

_.keys(studentList[0]) — возвращает массив ключей заданного объекта.

# Output

['id', 'name', 'age']

_.partition(studentList, el =› { return el[‘age’] ‹= 11}) — возвращает разбиение массива объектов на основе возраста. В этом случае учащиеся [возраст ≤ 11] и [возраст › 11]

# Output

parts: [
    [
        { id: 1, name: 'John', age: 10 },
        { id: 2, name: 'Jane', age: 11 },
        { id: 4, name: 'Alice', age: 10 },
        { id: 5, name: 'Pete', age: 11 }
    ],
    [{ id: 3, name: 'Bob', age: 12 }]
]

_.reject(studentList,{age: 10}) — возвращает массив объектов, исключая объект, соответствующий критериям.

# Output

[
    { id: 2, name: 'Jane', age: 11 },
    { id: 3, name: 'Bob', age: 12 },
    { id: 5, name: 'Pete', age: 11 }
  ]

_.pickBy() — выбирает объект, соответствующий критериям.

_.map(
    studentList,
    obj => _.pickBy(obj, (v, k) =>
        _.startsWith(v, "J")))
    .filter(value =>
        !_.isEmpty(value))
# Output

[ { name: 'John' }, { name: 'Jane' } ]

ментальная карта