Обычно мне приходилось сопоставлять каждый ключ и значение в объекте, когда я разрабатывал любое приложение на js.
Итак, в этом посте я покажу, как мы можем реализовать Object.map()
и добавить его в прототип объекта, чтобы мы могли использовать эту функцию из любого объекта, который есть в нашем приложении.
начнем с создания этого объекта:
И чтобы создать функцию, которую мы можем вызывать из любого объекта, все, что нам нужно сделать, это добавить ее в прототип объекта следующим образом:
мы используем ключевое слово function, потому что хотим, чтобы это было привязано к объекту, вызвавшему функцию карты, и этого не произойдет при использовании функций-стрелок.
Для реализации функции карты я буду использовать две встроенные функции из функции конструктора объектов Object.entries и Object.entries.
Object.entries Пример:
Функция entry вернет массив массивов, и каждый массив представляет собой ключ и значение для каждого свойства в объекте.
Пример Object.fromEntries:
fromEntries отображает массив массивов в объект, первый индекс из каждого массива является ключом, а второй — значением.
Думаю, после этих двух примеров становится ясно, какой будет реализация map
.
давайте вернемся к функции map, которую мы создали ранее, и реализуем ее.
— нам нужно получить ключи и значения объекта в виде массива массивов (Objcet.entries).
— зациклиться на них и передать их функции обратного вызова, определенной пользователем, которая будет отображать их, и эта функция должна возвращать массив, такой как [новый ключ, новое значение] или ноль, если вы хотите удалить это свойство.
— В конце концов, я буду использовать fromEntries, чтобы вернуть массив массивов в один объект, и мы хотим отфильтровать нулевые значения, потому что их передача в fromEntries вызовет ошибку.
Вот реализация:
использование с объектом, который мы сначала создали:
Этот пример очень простой, но вы можете выполнять очень мощные преобразования для своих объектов.
Список литературы, которая может быть полезна
— Реализация функций высшего порядка массива