首页 > 解决方案 > javascript 对象的性能相关问题

问题描述

我想知道以下两个编码范例中是否存在一些性能问题。哪一个是最好的,为什么?

var data = [{
        "name": "ABC",
        "code": 1,
        "age": 97
    },{
        "name": "XYZ",
        "code": 12,
        "age": 12
    },{
        "name": "LMN",
        "code": 121,
        "age": 172
    }
];

var response = [];

方法1

data.forEach(function(entry){
        var obj = {
            "NAME": entry["name"],
            "AGE": entry["age"]
        };
        response.push(obj);
});

方法2

data.forEach(function(entry){
        var obj = {};
        obj["NAME"] = entry["name"];
        obj["AGE"] = entry["age"];
        response.push(obj);
});

对于输出对象,我需要假设,100 个键中只有 10 个键该对象中有很多键。示例中仅显示了有限的部分。选择哪种编码标准,为什么?请问,有人能解释一下吗?

标签: javascriptjsonobject

解决方案


无需创建对象,然后为每次循环迭代制作Array.prototype.push() ...

您可以直接使用Array.prototype.map()而不是Array.prototype.forEach()并通过点符号更好地访问对象属性值:

const data = [{
    "name": "ABC",
    "code": 1,
    "age": 97
  },{
    "name": "XYZ",
    "code": 12,
    "age": 12
  },{
    "name": "LMN",
    "code": 121,
    "age": 172
  }
];

const response = data.map(obj => ({
  NAME: obj.name,
  AGE: obj.age
}));

console.log(response)


推荐阅读