如何在javascript中将子数组对象推送到数组中
大家好,我正在使用javascript,我正在尝试将对象值推送到一个数组中,这里我附加了我的代码如何在javascript中将子数组对象推送到数组中,javascript,arrays,Javascript,Arrays,大家好,我正在使用javascript,我正在尝试将对象值推送到一个数组中,这里我附加了我的代码 var data = [{ BuildingID: "56", FloorId: "65", volume: [{ one: 12, two: 15, three: 12 }] }] var Mai
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);
}
var数据=[{
建筑ID:“56”,楼板:“65”,体积:[{
一:十二,,
二:十五,,
三点十二分
}]
}]
var mainfo=[];
对于(i=0;i
这是工作,但不完全适用于这里我提到了例外输出我应该需要什么
电流输出
预期产量
注意:在data volume中有动态帮助如何执行此操作。请尝试使用和函数。并用于迭代数组。不要使用
卷[0]
。请使用forEach进行迭代
var data=[{BuildingID:“56”,floorrid:“65”,卷:[{one:12,two:15,three:12}]]
var mainfo=[];
对于(i=0;i console.log(mainfo)
这应该适合您
var数据=[
{
BuildingID:“56”,
地板:“65”,
卷:[
{
一:十二,,
二:十五,,
三点十二分
}
]
}
];
var mainfo=[];
对于(i=0;i 控制台日志(mainfo)代码>您可以使用如下函数:
function copyProperties(sourceObject, destinationObject)
{
var k;
for (k in sourceObject)
{
if (sourceObject.hasOwnProperty(k))
destinationObject[k] = sourceObject[k];
}
}
请注意,您尚未完全描述如果卷
数组中有多个对象时会发生什么情况。您可以使用它将所有属性指定给另一个对象
var data=[{BuildingID:“56”,floorrid:“65”,卷:[{one:12,two:15,three:12}]},
mainfo=[],
i、 obj;
对于(i=0;i 控制台日志(mainfo)代码>如果您想要此预期输出,只需将第二部分替换为
var MainInfo=[];
for (i = 0; i < data.length; i++) {
var obj = {}
obj.BuildingID = data[i].BuildingID;
obj.FloorId = data[i].FloorId;
obj.one = data[i].volume[0].one;
obj.three = data[i].volume[0].three;
obj.two = data[i].volume[0].two;
MainInfo.push(obj);
}
var mainfo=[];
对于(i=0;i
如果使用jQuery,可以使用$.extend(obj,卷[0])
循环卷并获取密钥
var数据=[{
建筑ID:“56”,楼板:“65”,体积:[{
一:十二,,
二:十五,,
三点十二分
}]
}];
var mainfo=[];
对于(变量i=0;i 控制台日志(mainfo)代码>已经有很多正确答案,但是您可以使用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"],
}})
关于arrow函数的更多信息(很高兴终于亲自见到JavaScript):-)我已经更新了我的问题:)@trincotNote:在data volume中是动态帮助如何做这个注意事项IE或大多数Android浏览器都不支持对象.assign
,你将需要一个多边形填充。@jcaron,对,但是新的标准是ES6,带有Object.assign
。仍然可以迭代想要的属性并手动分配,但要知道,有一种新方法可以直接分配一大堆属性,这是一种优势。不太确定使用对象的意义。当您可以直接访问原始对象时,值可以是什么,特别是考虑到Object.values
的支持非常有限。@jcaron对于op requirementObject.values
就足够了。Object.values
数组和我使用的Object.values
数组的长度相同。并且使用Object.values
无缘无故地使事情过于复杂。当您可以写入data[i][c][a]
时,您可以写入Object.values(数据[i].volume[c])[b]
。此外,还有很多浏览器不支持它。另外,您在两个嵌套循环中使用相同的变量(a
),这很容易造成混淆。缩进不正确。通常最好使用hasOwnProperty
检查或等效项跳过潜在的继承属性。