我有一个对象和以下种类的数组
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);
}
答案 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