大家好我正在使用javascript我试图将对象值推入一个数组,我附上了我的代码
var data = [{
BuildingID: "56", FloorId: "65", volume: [{
one: 12,
two: 15,
three: 12
}]
}]
var MainInfo=[];
for (i = 0; i < data.length; i++) {
var obj = {}
obj.BuildingID = data[i].BuildingID;
obj.FloorId = data[i].FloorId;
obj.volume = data[i].volume[0];
MainInfo.push(obj);
}
它工作但不完全适用于此我提到了例外输出我应该需要什么
注意:在数据量是动态帮助如何做到这一点
答案 0 :(得分:3)
这应该对你有用
var data = [
{
BuildingID : "56",
FloorId : "65",
volume : [
{
one : 12,
two : 15,
three : 12
}
]
}
];
var MainInfo = [];
for (i = 0; i < data.length; i++) {
var obj = {};
obj.BuildingID = data[i].BuildingID;
obj.FloorId = data[i].FloorId;
Object.getOwnPropertyNames(data[i].volume[0]).forEach(function (key) {
obj[key] = data[i].volume[0][key];
});
MainInfo.push(obj);
}
console.log(MainInfo);
答案 1 :(得分:2)
循环音量和获取键
NAME_IT
&#13;
答案 2 :(得分:2)
已经有很多正确答案,但您可以使用ES6 Arrow功能以最少的语法实现此目的。
var MainInfo = data.map( x=>{ return {
"BuildingID" : x.BuildingID,
"FloorId" : x.FloorId,
"one" : x.volume[0]["one"],
"two" : x.volume[0]["two"],
"three" : x.volume[0]["three"],
}})
有关箭头功能的更多信息here
答案 3 :(得分:1)
尝试使用Object.key()
和Object.values()
函数。和Array#forEach
用于迭代数组.Don&#39; t hardcore with volume[0]
.batter iterate with forEach
var data = [{ BuildingID: "56", FloorId: "65", volume: [{ one: 12, two: 15, three: 12}] }]
var MainInfo=[];
for (i = 0; i < data.length; i++) {
var obj = {}
obj.BuildingID = data[i].BuildingID;
obj.FloorId = data[i].FloorId;
data[i].volume.forEach(function(a,c){
Object.keys(data[i].volume[c]).forEach(function(a,b){
obj[a] = Object.values(data[i].volume[c])[b]
})
})
MainInfo.push(obj);
}
console.log(MainInfo)
&#13;
答案 4 :(得分:1)
如果你想要这个预期的输出,只需用
替换第二部分classic
答案 5 :(得分:0)
你可以使用这样的功能:
function copyProperties(sourceObject, destinationObject)
{
var k;
for (k in sourceObject)
{
if (sourceObject.hasOwnProperty(k))
destinationObject[k] = sourceObject[k];
}
}
请注意,如果volume
数组中有多个对象,您还没有完全描述会发生什么。
答案 6 :(得分:0)
您可以使用Object.assign
将所有属性分配给另一个对象。
var data = [{ BuildingID: "56", FloorId: "65", volume: [{ one: 12, two: 15, three: 12 }] }],
mainInfo = [],
i, obj;
for (i = 0; i < data.length; i++) {
obj = {}
obj.BuildingID = data[i].BuildingID;
obj.FloorId = data[i].FloorId;
mainInfo.push(Object.assign(obj, data[i].volume[0]));
}
console.log(mainInfo);
答案 7 :(得分:0)
如果您使用的是jQuery,则可以使用$.extend(obj, volume[0])