Форма Массив объектов с использованием массива и объекта - PullRequest
1 голос
/ 11 октября 2019

У меня есть объект и массив следующего вида

var sourceObject = { "item1" : 15 , "item2" : 20 " }
var feature =  ["field1", "field2" ] 

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

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


var result = [ { "name" : "field1" , "value" : 15 } , {  "name" : "field2" , "value": 20 }]

Конечная цель - прочитать его из sourceObject, чтобы получитькаждое значение, а затем выбрать каждое значение из массива «feature» для создания объекта

Подход, который я пробовал до сих пор:

 let result = [];
 for (let  value of Object.values(sourceObject)) {
    let row = { "field" : "XYZ" , "value": value };
    tableData.push(row);
 }

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Ваш объект не всегда гарантирует порядок, поэтому использование .values(), .keys() и т. Д. ... не всегда гарантирует ваш результат. Вместо этого вы можете получить число из вашей строки fieldN с помощью регулярного выражения. Здесь N представляет itemN, который вы хотите получить из вашего объекта. Используя это, вы можете .map() каждый fieldN к объекту из вашего sourceObject.

См. Пример ниже:

const sourceObject = { "item1" : 15 , "item2" : 20 };
const feature =  ["field1", "field2" ];
const res = feature.map((name, i) => {
  const [n] = name.match(/\d+$/g);
  const value = sourceObject[`item${n}`];
  return {name, value};
});

console.log(res);
1 голос
/ 11 октября 2019

Зацикливайтесь на клавишах sourceObject и затем используйте Array.map()

var sourceObject = {
  "item1": 15,
  "item2": 20
}
var feature = ["field1", "field2"]
var result = Object.keys(sourceObject).map((key, index) => {
  return {
    name: feature[index],
    value: sourceObject[key]
  }
});
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...