Проблема, связанная с производительностью для объекта JavaScript - PullRequest
0 голосов
/ 07 сентября 2018

Я хотел бы знать, есть ли какая-то проблема с производительностью, связанная с двумя приведенными ниже парадигмами кодирования.Какой из них лучший и почему?

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

var response = [];

Method1

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

Method2

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

Длявыходной объект, я должен сказать, предположим, только 10 ключей из 100 ключей. В объекте много ключей.Только ограниченное показано в примере.Какой стандарт кодирования выбрать и почему?Пожалуйста, кто-нибудь может объяснить?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Оба подхода хороши, и один не должен быть «быстрее» другого, по крайней мере, недостаточно, чтобы оправдать использование другого. Используйте тот, который вам нравится.

Но, если вы все еще ищете закрытие. Первый должен быть быстрее, поскольку он определяет весь объект за один раз. Двигатели не должны делать никаких проверок. Все сделано за один раз.

В отдельном примечании рассмотрите возможность использования точечной нотации: должно быть быстрее, так как движку не нужно будет создавать строки. Итак, измени

entry["name"]

до

entry.name

Кроме того, если это ваш действительный код, и цель состоит в том, чтобы изменить результат, чтобы иметь только имя и возраст , а не код . Вы можете сделать

data.forEach(user => delete user.code)
0 голосов
/ 07 сентября 2018

Нет необходимости создавать объекты, а затем создавать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...