Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中将子数组对象推送到数组中_Javascript_Arrays - Fatal编程技术网

如何在javascript中将子数组对象推送到数组中

如何在javascript中将子数组对象推送到数组中,javascript,arrays,Javascript,Arrays,大家好,我正在使用javascript,我正在尝试将对象值推送到一个数组中,这里我附加了我的代码 var data = [{ BuildingID: "56", FloorId: "65", volume: [{ one: 12, two: 15, three: 12 }] }] var Mai

大家好,我正在使用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);
  
            }
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;iconsole.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 requirement
Object.values
就足够了。
Object.values
数组和我使用的
Object.values
数组的长度相同。并且使用
Object.values
无缘无故地使事情过于复杂。当您可以写入
data[i][c][a]
时,您可以写入
Object.values(数据[i].volume[c])[b]
。此外,还有很多浏览器不支持它。另外,您在两个嵌套循环中使用相同的变量(
a
),这很容易造成混淆。缩进不正确。通常最好使用
hasOwnProperty
检查或等效项跳过潜在的继承属性。