Самый быстрый способ получить определенные поля в объекте - Javascript

У меня есть объект:

var obj = { a: 'test1', b: 'test2', c: 'test3', d: 'test4', e: 'test5', f: 'test6', g: 'test7', h: 'test8' }

Я хочу получить результат:

res = { a: 'test1', c: 'test3', d: 'test4' }

Как это сделать быстрее всего?

использовать delete obj.e

Just code 19.10.2018 10:03

@Justcode Хммм, возможно, вы захотите это проверить. В частности, проверьте доступ к другим свойствам на obj после того, как вы это сделаете. :-)

T.J. Crowder 19.10.2018 10:03

@ T.J.Crowder не должно вызывать проблем, если вы имеете дело с 1 объектом.

Just code 19.10.2018 10:40

@Justcode - Опять же, вы можете это проверить. Хорошо известно, что удаление свойства сводит на нет оптимизацию объекта. Даже один.

T.J. Crowder 19.10.2018 10:46

@ T.J.Crowder, ты об этом говоришь? stackoverflow.com/a/742653/2630817

Just code 19.10.2018 10:48

@Justcode - Нет, я говорю о это (см .: jsperf.com/effect-of-delete-on-performance/1).

T.J. Crowder 19.10.2018 11:23

@ T.J.Crowder, спасибо, время переделать: D

Just code 19.10.2018 11:46

@Justcode :-) Конечно, это немного микроопт. (И этот синтетический тест не выявляет проблемы в Firefox; я думаю, удаление сразу после создания оптимизируется.) Просто OP специально сказал «самый быстрый» ... ;-)

T.J. Crowder 19.10.2018 12:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
710
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Прямой доступ к полям:

res = {a: obj.a, c: obj.c, d: obj.d};

Я думаю, вы хотите удалить пару key-value из объекта, поэтому вот решение

delete obj[b];

delete obj[e];

или вы можете использовать lodash pick

var _ = require('lodash')
_.pick( obj, [a, c, d] )

или создайте новый Object

var final = {a: obj.a, c: obj.c, d: obj.d}

Возможно, вы захотите это проверить. В частности, проверьте доступ к другим свойствам на obj после того, как вы это сделаете. :-) delete оказывает значительное отрицательное влияние на производительность объектов, к которым вы его применяете.

T.J. Crowder 19.10.2018 10:04

да, но я видел много случаев, когда нужно было изменить только текущую переменную, а не создавать новую. Вот почему у меня есть несколько методов. В любом случае спасибо, что указали на это. :)

Atishay Jain 19.10.2018 10:09

Ну, ты не когда я опубликовал этот комментарий. И _.pick определенно не будет самым «быстрым» способом (даже удаленно).

T.J. Crowder 19.10.2018 10:18

Другие вопросы по теме