У меня есть объект:
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' }
Как это сделать быстрее всего?
@Justcode Хммм, возможно, вы захотите это проверить. В частности, проверьте доступ к другим свойствам на obj после того, как вы это сделаете. :-)
@ T.J.Crowder не должно вызывать проблем, если вы имеете дело с 1 объектом.
@Justcode - Опять же, вы можете это проверить. Хорошо известно, что удаление свойства сводит на нет оптимизацию объекта. Даже один.
@ T.J.Crowder, ты об этом говоришь? stackoverflow.com/a/742653/2630817
@Justcode - Нет, я говорю о это (см .: jsperf.com/effect-of-delete-on-performance/1).
@ T.J.Crowder, спасибо, время переделать: D
@Justcode :-) Конечно, это немного микроопт. (И этот синтетический тест не выявляет проблемы в Firefox; я думаю, удаление сразу после создания оптимизируется.) Просто OP специально сказал «самый быстрый» ... ;-)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Прямой доступ к полям:
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 оказывает значительное отрицательное влияние на производительность объектов, к которым вы его применяете.
да, но я видел много случаев, когда нужно было изменить только текущую переменную, а не создавать новую. Вот почему у меня есть несколько методов. В любом случае спасибо, что указали на это. :)
Ну, ты не когда я опубликовал этот комментарий. И _.pick определенно не будет самым «быстрым» способом (даже удаленно).
использовать
delete obj.e