【问题标题】:Performance of modifying an array in an object: to use a variable, or not?修改对象中数组的性能:使用变量,还是不使用?
【发布时间】:2013-06-12 05:06:17
【问题描述】:

考虑以下 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() );
    });
}

一如既往,如果有更好的方法来完成这些功能的工作,请赐教。

【问题讨论】:

  • 虽然这两个函数都“工作”,但不恰当地使用 .map 函数。也许这有助于更好地理解它:en.wikipedia.org/wiki/Map_function.
  • 这个问题没有实际意义。您使用的 map 方法错误。它用于循环一个数组并返回另一个数组,但您将它用作 each 方法。

标签: javascript jquery arrays variables object


【解决方案1】:
function adeneos_object() {
    obj[ keyx ] = $.map($( selector ),function(el){return el.value;});
}

【讨论】:

  • 这就是你使用map方法的方式。
【解决方案2】:

jsPerf comes with help

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

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

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2018-03-24
    • 2022-07-07
    相关资源
    最近更新 更多