Как переопределить объект вложенного массива - PullRequest
0 голосов
/ 25 марта 2019

Я хотел бы знать, как перезаписать значения в массиве объектов, если он существует, иначе объединить объекты, используя Javascript.

Например, targetAmount соответствует в родительском, поэтому мне нужно переопределить соответствующее значениеа оставшиеся значения просто вставьте родительский объект.

var my_obj = [{
  description: "transferwise_description"
  fee: "0.5"
  id: "transferwise"
  logo: "transferwiselogo.png"
  name: "Transferwise"
  speed: "1 Days"
  targetAmount: "2000"
}]

var tomerge_obj = {
  rate: 51.00674
  source: "SGD"
  sourceAmount: 1000
  target: "INR"
  targetAmount: 50688.97
  type: "REGULAR"
}

Ожидаемый вывод

var merged_object = [{
  description: "transferwise_description"
  fee: "0.5"
  id: "transferwise"
  logo: "transferwiselogo.png"
  name: "Transferwise"
  speed: "1 Days"
  rate: 51.00674
  source: "SGD"
  sourceAmount: 1000
  target: "INR"
  targetAmount: 50688.97
  type: "REGULAR"
}]

Ответы [ 4 ]

2 голосов
/ 25 марта 2019

Вы можете сделать это в одну строку с Object.assign().Вы можете найти больше документации по этому вопросу здесь .

const result = Object.assign({}, my_obj[0], tomerge_obj);
0 голосов
/ 25 марта 2019
  var my_obj = [{
  description: "transferwise_description",
  fee: "0.5",
  id: "transferwise",
  logo: "transferwiselogo.png",
  name: "Transferwise",
  speed: "1 Days",
  targetAmount: "2000"
}];

var tomerge_obj = {
  rate: 51.00674,
  source: "SGD",
  sourceAmount: 1000,
  target: "INR",
  targetAmount: 50688.97,
  type: "REGULAR"
};

my_obj[0] = {...my_obj[0], ...tomerge_obj};
console.log(my_obj);

 my_obj[0] = {...my_obj[0], ...tomerge_obj};

'...' является оператором распространения и обычно используется для деструктуризации объекта.


По сути, это будет то, что он переназначит первый элемент массива вновь созданному объекту, распространяя атрибуты двух объектов.

console.log подтвердит утверждение.

0 голосов
/ 25 марта 2019

Вы можете просто использовать деструктурирование , таким образом:

var merged_object = {...my_obj[0], ...tomerge_obj}

Он вернет новый объект со значениями из tomerge_obj Дублированные ключи заменит те, которые находятся внутри объектаmy_obj.

Вы также можете использовать Object.assign и назначить оба объекта пустому для достижения того же результата.

0 голосов
/ 25 марта 2019

jQuery extend здесь только для этого (ответил на это, потому что вы пометили jQuery, он имеет гораздо более широкую поддержку браузера, чем assign или оператор распространения)

Обратите внимание, что он изменяет исходный объект, еслиВы не хотите, используйте var res = $.extend(true, {}, my_obj[0], tomerge_obj);

var my_obj= [
  {
    description: "transferwise_description",
    fee: "0.5",
    id: "transferwise",
    logo: "transferwiselogo.png",
    name: "Transferwise",
    speed: "1 Days",
    targetAmount: "2000",
  }
];

var tomerge_obj = {
  rate: 51.00674,
  source: "SGD",
  sourceAmount: 1000,
  target: "INR",
  targetAmount: 50688.97,
  type: "REGULAR",
};

$.extend(true, my_obj[0], tomerge_obj)

console.log(my_obj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...