【问题标题】:Fastest way to get specific fields in an Object - Javascript获取对象中特定字段的最快方法 - Javascript
【发布时间】:2019-03-24 02:19:07
【问题描述】:

我有一个对象:

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
  • @Justcode 嗯,你可能想测试一下。特别是在您完成后测试访问obj 上的其他属性。 :-)
  • @T.J.Crowder 如果您正在处理 1 个属性,则应该不会有问题。
  • @T.J.Crowder 谢谢你,是时候做一些返工了:D
  • @Justcode :-) 当然,这有点微选。 (并且该综合基准并没有揭示 Firefox 上的问题;我认为创建后立即删除已被优化。)只是,OP 确实明确表示“最快”...... ;-)

标签: javascript


【解决方案1】:

直接访问字段:

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

【讨论】:

    【解决方案2】:

    我认为您想从对象中删除 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 对您应用它的对象的性能有很大的不幸影响。
    • 是的,但我见过很多只需要更改当前变量而不是创建新变量的情况。这就是为什么我有多种方法。无论如何,感谢您指出这一点。 :)
    • 好吧,你没有when I posted that comment。而_.pick 肯定不会是“最快”的方式(甚至不是远程)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 2012-03-18
    • 2013-09-02
    • 1970-01-01
    • 2022-06-30
    • 2021-10-30
    相关资源
    最近更新 更多