Javascript合并并重命名Json对象
这里有一个简单的问题:我想合并两个Json对象,同时重命名第二个 第一个阵列(obj1): 第二个阵列(obj2): 预期结果:Javascript合并并重命名Json对象,javascript,json,Javascript,Json,这里有一个简单的问题:我想合并两个Json对象,同时重命名第二个 第一个阵列(obj1): 第二个阵列(obj2): 预期结果: [ { "name":"Metric 1", // Obj1 "value":118181851, // Obj1 "name_compare":"Metric 1", // Obj2 "value_compare":148748, // Obj2 }, { "name":"Me
[
{
"name":"Metric 1", // Obj1
"value":118181851, // Obj1
"name_compare":"Metric 1", // Obj2
"value_compare":148748, // Obj2
},
{
"name":"Metric 2", // Obj1
"value":15151, // Obj1
"name_compare":"Metric 2", // Obj2
"value_compare":741178, // Obj2
}
]
所以我试着:
重命名Obj2(正常工作):
然后,我尝试使用以下方法合并它们:
function JsonMergeCompare(obj1, obj2 ) {
var renamed_obj2 = JsonRename(obj2);
var output = {};
for (i in obj1) {
output[i] = obj1[i];
output[i] = renamed_obj2[i];
}
return output;
}
我的问题肯定是在上面的函数中,因为它只返回obj2(这很有意义,因为我在输出[I]上迭代了两次),但是我如何才能进入并只更改key->value呢?正如您所说,函数就是问题所在 每个对象需要两个循环,如下所示:
function JsonMergeCompare(obj1, obj2 ) {
var renamed_obj2 = JsonRename(obj2);
var output = {};
for (i in obj1)
output[i] = obj1[i];
for (i in renamed_obj2)
output[i] = renamed_obj2[i];
return output;
}
我建议您定义一个Array.zip()函数,如下所示:
Array.zip = function(left, right, combinerFunction) {
var counter, results = [];
for(counter = 0; counter < Math.min(left.length, right.length); counter++) {
results.push(combinerFunction(left[counter], right[counter]));
}
return results;
};
var resultArray = Array.zip(array1, array2, function(one, two) {
return {
name: one.name,
value: one.value,
name_compare: two.name,
value_compare: two.value
};
});
试试这个,我确定你真正想要的是什么,但我只是根据你想要的结果来回答
//第一阵列(obj1)
var_obj1=[
{
“名称”:“指标1”,
“价值”:33731487,
},
{
“名称”:“指标2”,
“价值”:11252893,
}
];
//第二个阵列(obj2):
var_obj2=[
{
“名称”:“指标1”,
“价值”:118181851,
},
{
“名称”:“指标2”,
“价值”:15151,
},
{
“名称”:“指标3”,
“价值”:123,
},
];
函数jsonRename(obj1、obj2){
var out=[];
var键={};
var-ctr=0;
var-indx=0;
用于(obj1中的v){
if(typeof(obj1[v].name)!=“未定义”){
var n=obj1[v]。名称;
if(类型(键[n])=“未定义”){
向外推(obj1[v]);
键[n]=输出长度-1;
}
用于(obj2中的v1){
试一试{
如果(n==obj2[v1].name){
ctr++;
out[keys[n][“name_compare”+ctr]=obj2[v1]。name;
out[keys[n][“value_compare”+ctr]=obj2[v1]。值;
}
}捕获(e){}
}
}
}
返回;
}
var out=jsonRename(_obj1,_obj2);
你能提供小提琴或弹琴吗?为什么是-1?我认为这是一个相当体面的问题!
function JsonMergeCompare(obj1, obj2 ) {
var renamed_obj2 = JsonRename(obj2);
var output = {};
for (i in obj1)
output[i] = obj1[i];
for (i in renamed_obj2)
output[i] = renamed_obj2[i];
return output;
}
Array.zip = function(left, right, combinerFunction) {
var counter, results = [];
for(counter = 0; counter < Math.min(left.length, right.length); counter++) {
results.push(combinerFunction(left[counter], right[counter]));
}
return results;
};
var resultArray = Array.zip(array1, array2, function(one, two) {
return {
name: one.name,
value: one.value,
name_compare: two.name,
value_compare: two.value
};
});