如何在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语句