Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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 - Fatal编程技术网

如何在javascript中合并以下数组?

如何在javascript中合并以下数组?,javascript,Javascript,我有两个数组,我想加入它们 function test() { var arr1 = [ {"id":1,"name":"Michale Sharma","gender":"Male","age":25,"salary":10000}, {"id":2,"name":"Sunil Das","gender":"Male","ag

我有两个数组,我想加入它们

function test()
        {

            var arr1 = [
                                {"id":1,"name":"Michale Sharma","gender":"Male","age":25,"salary":10000},
                                {"id":2,"name":"Sunil Das","gender":"Male","age":24,"salary":5000},{"id":3,"name":"Robin Pandey","gender":"Male","age":35,"salary":45000},{"id":4,"name":"Mona Singh","gender":"Female","age":27,"salary":12000}

                        ];
            var arr2 = [
                            {"Deptid":4,"Deptname":"IT"},
                            {"Deptid":1,"Deptname":"HR"},
                            {"Deptid":3,"Deptname":"HW"},
                             {"Deptid":24,"Deptname":"HW4"}
                        ];

            var res = Pack(arr1,arr2);
            console.log(res);
        }

    function Pack() 
    { 

        var args = [].slice.call(arguments);        

        args.join(',');       

        return args;
    }      
我期待的输出为

[{"Employees":[{"id":1,"name":"Michale Sharma","gender":"Male","age":25,"salary":10000},{"id":2,"name":"Sunil Das","gender":"Male","age":24,"salary":5000},{"id":3,"name":"Robin Pandey","gender":"Male","age":35,"salary":45000},{"id":4,"name":"Mona Singh","gender":"Female","age":27,"salary":12000}],"Departments":[{"Deptid":1,"Deptname":"IT"},{"Deptid":2,"Deptname":"HR"},{"Deptid":3,"Deptname":"HW"},{"Deptid":4,"Deptname":"SW"}]}] 
但是不能。怎么做

我已经尝试过使用Javascript的Concat()函数,但没有效果


注意~可以假设Pack函数中的数组数量是可变的。

您不能执行以下操作吗:

var newArray = [ { "Employees": arr1, "Departments": arr2 } ]
试试这个:

var arr1 = [
                                {"id":1,"name":"Michale Sharma","gender":"Male","age":25,"salary":10000},
                                {"id":2,"name":"Sunil Das","gender":"Male","age":24,"salary":5000},{"id":3,"name":"Robin Pandey","gender":"Male","age":35,"salary":45000},{"id":4,"name":"Mona Singh","gender":"Female","age":27,"salary":12000}

                        ];
            var arr2 = [
                            {"Deptid":4,"Deptname":"IT"},
                            {"Deptid":1,"Deptname":"HR"},
                            {"Deptid":3,"Deptname":"HW"},
                             {"Deptid":24,"Deptname":"HW4"}
                        ];

var json = {};
var jsonArr = [];

json.Employees = arr1;
json.Department = arr2;

jsonArr.push(json);

document.write(JSON.stringify(jsonArr));

根据预期的JSON,您需要的既不是“合并”,也不是“串联”。您希望在对象中放置一个数组

您需要的内容如下:

var output = [{
    "Employees": arr1,
    "Department": arr2
}];

请注意,
output
是一个符合您期望的数组。我不明白你为什么需要一个数组。

好的,我为你准备了一个小提琴

function test() {

        var arr1 = {"Employees" : [
                            {"id":1,"name":"Michale Sharma","gender":"Male","age":25,"salary":10000},
                            {"id":2,"name":"Sunil Das","gender":"Male","age":24,"salary":5000},{"id":3,"name":"Robin Pandey","gender":"Male","age":35,"salary":45000},{"id":4,"name":"Mona Singh","gender":"Female","age":27,"salary":12000}

                    ]};
        var arr2 = {"Departments":[
                        {"Deptid":4,"Deptname":"IT"},
                        {"Deptid":1,"Deptname":"HR"},
                        {"Deptid":3,"Deptname":"HW"},
                         {"Deptid":24,"Deptname":"HW4"}
                    ]};

        var res = Pack(arr1,arr2);
        console.log(res);
    }

function Pack() 
{ 
    var results = [];
    arguments.forEach(function(element){
        results.push(element);
    });
    return results;
}      
您的大多数代码都保持不变,除了我在测试函数中添加了以下内容:

 var myObjToMerge = [{Employees:[]},{Departments:[]}];
 var res = Pack(myObjToMerge,arr1,arr2);
function Pack() 
    { 
        var objToMerge = arguments[0];
        for(var i = 0;i<objToMerge.length;i++)
        {
            if(arguments.length > i+1)
            {
                var firstProperty = Object.keys(objToMerge[i])[0];
                objToMerge[i][firstProperty]= arguments[i+1];
            }
        }   


        return objToMerge;
    }      
你需要给“Pack”一些对象来合并数组,所以我根据你的例子创建了一个任意的对象数组。请注意,这个对象数组可以来自任何地方,并且这个方法不需要像其他一些示例那样提前知道它

然后我更改了“打包”功能:

 var myObjToMerge = [{Employees:[]},{Departments:[]}];
 var res = Pack(myObjToMerge,arr1,arr2);
function Pack() 
    { 
        var objToMerge = arguments[0];
        for(var i = 0;i<objToMerge.length;i++)
        {
            if(arguments.length > i+1)
            {
                var firstProperty = Object.keys(objToMerge[i])[0];
                objToMerge[i][firstProperty]= arguments[i+1];
            }
        }   


        return objToMerge;
    }      
将返回对象中第一个属性的字符串值。然后,我们使用它将参数中的下一个数组设置为该属性:

objToMerge[i][firstProperty]= arguments[i+1];

这里有大量的假设和改进方法,但您可以看到它在小提琴中工作,您可以根据需要对其进行改进。

arr1.concat(arr2)
。这显示了谷歌的一些不足。我10分钟前找过这个,1分钟就找到了。join(“,”)将创建一个字符串-您不想这样做。2.你必须以某种方式传递诸如“部门”、“员工”之类的论点。最后,您根本不想加入这些数组。您希望返回{Employees:args[0],Departments:args[1]}现在我仔细查看了输出,您的标题已经过时了。您想执行
[{'Employees':arr1,'Departments':arr2}]
。不需要函数之类的东西。他们要求的不仅仅是把两个数组放在一起。看起来他们想把两个数组放在一个数组中来分隔对象。“Employees”和“Departments”对象在代码中的任何地方都没有指定,但应该在输出中指定。。。另外,请注意,您需要将名称括在
周围。
这是迄今为止最简单的方法@ismaelmiguel
不是真的需要。@Fietsband你的意思是,唯一的方法?@ismaelmiguel:JSON需要键名的双引号(不是单引号)。根据语言语法,不适用于Javascript。@IsmaelMiguel不,如果我真的变得富有创造性,我可能会想到其他方法来获得相同的结果。你只需将参数推入数组,不需要for语句