Добавьте ключ и значение в массив с помощью javascript

#javascript #arrays #object

#язык JavaScript #массивы #объект

Вопрос:

У меня есть два объекта, и мне нужно создать один новый массив с новой структурой, например: Это мои объекты:

Объект 1: [{ «Вопрос»:»Изменение климата», «Всего»:»3,456″ }]

Объект 2: [{ «Вопрос»:»Изменение климата», «Всего»:»3,567″ }]

Мне нужен этот вывод

[{ «x»:3,456, «y»:3,567 }]

Я попытался создать нужный мне массив с помощью одного из массивов… Поэтому я использовал первый массив, чтобы иметь: [{y:3.456}] и это работает, теперь мне нужно добавить ключ x и значение из второго массива, поэтому я попробовал это:

Где chardatavalue-это один из массивов(который содержит ключ «y» и значение), а arrayforxls2-другой, но код, который у меня есть, присваивает только последнее значение массива seconf всем ключам «x».

 var resultnew = chartdatavalue.map(function (el) {  var o = Object.assign({}, el);   for (let i of arrayforxls2) {    o.x = i.Total;    }  return o;  });  

значение chartdatavalue имеет такую структуру:

 [{ y: '3.893' }]  

arrayxls2 имеет такую структуру:

 [{ "Question":"Climate change", "Total":"3.567" }]  

Мне нужен этот вывод:

[{ «x»:3.567, «y»:3.893 }] Не могли бы вы, пожалуйста, помочь мне.

Комментарии:

1. Покажите свои усилия.

2. Я отредактировал свой вопрос тринко, спасибо.

3. Что такое arrayforxls2 ? Это нигде не определено. И в чем заключается ценность chartdatavalue . Пожалуйста, предоставьте код, необходимый нам для воспроизведения вашей проблемы.

4. Хорошо, я добавил то, что содержит значение chartdatavalue и arrayforxls2

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

Ответ №1:

Возможно, вы ищете это:

 var resultnew = chartdatavalue.map(function (el, i) {  return Object.assign({ x: arrayforxls2[i].Total }, el); });  

Изменение здесь заключается в том, что i оно записывается и используется, так что i-й объект из одного массива объединяется с i-м объектом другого.

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

 var resultnew = chartdatavalue.map((el, i) =gt;  ({ x: arrayforxls2[i].Total, ...el}) );  

Или, когда есть другие свойства, el которые вам нужно игнорировать, затем с помощью деструктурирования объектов:

 var resultnew = chartdatavalue.map(({y}, i) =gt;  ({ x: arrayforxls2[i].Total, y}) );  

Комментарии:

1. да!!! Большое вам спасибо!!!!

Ответ №2:

Что — то вроде этого:

 var resultnew = chartdatavalue.map((el, i) =gt; ({x: el.Total, y: arrayforxls2[i].Total}));  

Это повторяет один из массивов и использует индекс i для получения значения из соответствующего объекта в другом массиве.

Нет смысла использовать Object.assign() , так как результирующие объекты не содержат имен свойств входных объектов.