修改对象中数组的性能:使用变量还是不使用?

时间:2013-06-15 19:45:06

标签: javascript jquery arrays variables object

考虑以下JavaScript全局对象:

var obj = { key1: [ 'data1', 'data2', ... ], key2: [ 'data1, 'data2', ... ], ... }

假设我有一个需要修改分配给obj中特定键的数组的函数。使用局部变量进行计算并在函数末尾修改数组是否更有效,或者我应该直接修改数组,因为它不在对象的深处?

从本质上讲,我问的是哪个功能更有效:

function local_variable() {
    var foo = [];
    $( selector ).map(function() {
        foo.push( $( this ).val() );
    });
    obj[ keyx ] = foo;
}

function global_object() {
    obj[ keyx ] = [];
    $( selector ).map(function() {
        obj[ keyx ].push( $( this ).val() );
    });
}

与往常一样,如果有更好的方法来完成这些功能所做的事情,请赐教。

2 个答案:

答案 0 :(得分:3)

function adeneos_object() {
    obj[ keyx ] = $.map($( selector ),function(el){return el.value;});
}

答案 1 :(得分:1)

jsPerf comes with help

显然,每次访问对象的属性(global_object)都比数据获取和进一步分配(local_variable)慢。

但是,如您所见,它取决于特定浏览器使用的优化策略(Firefox,几乎相同)。