jQuery $ .each l oop: изменить свойство объекта - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть все oop и объект blueprint . На каждой итерации я делаю копию объекта светокопии и меняю свойство options, но окончательный результат неверен. Вот код

var combinations = [
  "10,2",
  "10,3",
  "10,4",
  "11,2",
  "11,3",
  "11,4",
  "12,2",
  "12,3",
  "12,4"
];

var blueprint = {
  'options': [],
  // other properties here, like this:
  /*
  'name': '',
  'price': '',
  'files': []
  */
};    

$.each(combinations, function(index, item){ 
  var obj = blueprint;
  obj.options = item.split(',');
  console.log(
    item, // ok
    obj.options, // ok
    obj // wrong obj.options!
  );

  // call a function with my object
  // myFunc(obj);
});

Вот Скрипка, показывающая проблему (Я попытался использовать внутренний фрагмент StackOverflow: внутренняя консоль дает правильный результат, консоль браузера все еще показывает неправильный результат поэтому я предпочитаю внешнюю скрипку)

Я мог бы использовать var obj = JSON.parse(JSON.stringify(blueprint)), чтобы избежать объекта, переданного по ссылке, но это далеко от идеала

Любое решение, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...