使用数组和对象形成对象数组

时间:2019-10-11 12:47:54

标签: javascript arrays object ecmascript-6

我有一个对象和以下种类的数组

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

我正在尝试将上述对象转换为对象数组。 对象和数组中的项目数将相同

对象的结果数组应如下所示:


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

最终目的是从sourceObject中读取它以获得每个值,然后从“功能”数组中选择每个值以形成一个对象

到目前为止我尝试过的方法:

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

2 个答案:

答案 0 :(得分:1)

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);

答案 1 :(得分:1)

您的对象并不总是保证顺序,因此使用.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);

请参见以下示例:

FUNCTION "Test" : Void
VAR_TEMP
    TEMP0: BOOL;
END_VAR
BEGIN
    "Block1_DB"();
    #TEMP0 := "Block1_DB".Y AND "Block1_DB".X;
    "Block2_DB"(U := "Block1_DB".Z, V := #TEMP0);
END_FUNCTION