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

Javascript 修改对象中数组的性能:是否使用变量?,javascript,jquery,arrays,variables,object,Javascript,Jquery,Arrays,Variables,Object,考虑以下JavaScript全局对象: var obj = { key1: [ 'data1', 'data2', ... ], key2: [ 'data1, 'data2', ... ], ... } 假设我有一个函数需要修改分配给obj中特定键的数组。在计算中使用局部变量并在函数末尾修改数组是否更有效,还是应该直接修改数组,因为它不在对象的深处 本质上,我是在问哪个功能更有效: function local_variable() { var foo = []; $( se

考虑以下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() );
    });
}
一如既往,如果有更好的方法来实现这些功能,请告诉我。

function adeneos_object() {
    obj[ keyx ] = $.map($( selector ),function(el){return el.value;});
}
显然,每次访问对象的属性(
global\u object
)都比数据采集和进一步赋值(
local\u variable
)慢

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

显然,每次访问对象的属性(
global\u object
)都比数据采集和进一步赋值(
local\u variable
)慢


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

虽然这两个函数都“起作用”,但这是对
.map
函数的不当使用。也许这有助于更好地理解它:。这个问题没有实际意义。您使用的映射方法是错误的。它用于循环一个数组并返回另一个数组,但您使用它作为each方法。虽然这两个函数都“起作用”,但它不适合使用
.map
函数。也许这有助于更好地理解它:。这个问题没有实际意义。您使用的映射方法是错误的。它用于循环一个数组并返回另一个数组,但您使用它作为each方法。这是您使用map方法的方式。这是您使用map方法的方式。