#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()
, так как результирующие объекты не содержат имен свойств входных объектов.