对象1:
{a50: "PTP-1",b51: "09+75",c52: "112D",d53: "60.745",e54: "72.698",f55: "72.695",g56: "0.003",h57: null,i58: null, j59: "68.918", k60: null}
对象2:
[{ipid:'50', type:'Constant'},{ipid:'51', type:'Constant'},{ipid:'52', type:'Constant'},{ipid:'53', type:'Constant'},{ipid:'54', type:'Constant'},{ipid:'55', type:'Constant'},{ipid:'56', type:'Constant'},{ipid:'57', type:'Variable'},{ipid:'58', type:'Variable'},{ipid:'59', type:'Variable'},{ipid:'60', type:'Variable'}]
我有两个具有相同长度的javascript对象,我想组合并生成一个新的javascript对象
[
{ipid: "50", type: "Constant", a50: "PTP-1"},
{ipid: "51", type: "Constant", b51: "09+75"},
{ipid: "52", type: "Constant", c52: "112D"},
{ipid: "53", type: "Constant", d53: "60.745"},
{ipid: "54", type: "Constant", e54: "72.698"},
{ipid: "55", type: "Constant", f55: "72.695"},
{ipid: "56", type: "Constant", g56: "0.003"},
{ipid: "57", type: "Variable", h57: null},
{ipid: "58", type: "Variable", i58: null},
{ipid: "59", type: "Constant", j59: "68.918"},
{ipid: "60", type: "Variable", k60: null}
]
正在寻找更快更有效的代码。 (也许只是在原生的js中)
谢谢
答案 0 :(得分:1)
看看这个:
var obj1 = {a50: "PTP-1",b51: "09+75",c52: "112D",d53: "60.745",e54: "72.698",f55: "72.695",g56: "0.003",h57: null,i58: null, j59: "68.918", k60: null}
var obj2 = [{ipid:'50', type:'Constant'},{ipid:'51', type:'Constant'},{ipid:'52', type:'Constant'},{ipid:'53', type:'Constant'},{ipid:'54', type:'Constant'},{ipid:'55', type:'Constant'},{ipid:'56', type:'Constant'},{ipid:'57', type:'Variable'},{ipid:'58', type:'Variable'},{ipid:'59', type:'Variable'},{ipid:'60', type:'Variable'}]
var output = [],
key = '';
for(key in obj1){
if(obj1.hasOwnProperty(key)){
var current = obj2.filter(function(e){
return e.ipid == key.substr(1)
});
for(var i = 0; i < current.length; i++){
var temp = {
ipid: current[i].ipid,
type: current[i].type
}
temp[key] = obj1[key];
output.push(temp);
}
}
}
返回以下结果:
[
{"ipid": "50", "type": "Constant", "a50": "PTP-1"},
{"ipid": "51", "type": "Constant", "b51": "09+75"},
{"ipid": "52", "type": "Constant", "c52": "112D"},
{"ipid": "53", "type": "Constant", "d53": "60.745"},
{"ipid": "54", "type": "Constant", "e54": "72.698"},
{"ipid": "55", "type": "Constant", "f55": "72.695"},
{"ipid": "56", "type": "Constant", "g56": "0.003"},
{"ipid": "57", "type": "Variable", "h57": null},
{"ipid": "58", "type": "Variable", "i58": null},
{"ipid": "59", "type": "Variable", "j59": "68.918"},
{"ipid": "60", "type": "Variable", "k60": null}
]
答案 1 :(得分:1)
var a = {a50: "PTP-1",b51: "09+75",c52: "112D",d53: "60.745",e54: "72.698",f55: "72.695",g56: "0.003",h57: null,i58: null, j59: "68.918", k60: null};
var b = [{ipid:'50', type:'Constant'},{ipid:'51', type:'Constant'},{ipid:'52', type:'Constant'},{ipid:'53', type:'Constant'},{ipid:'54', type:'Constant'},{ipid:'55', type:'Constant'},{ipid:'56', type:'Constant'},{ipid:'57', type:'Variable'},{ipid:'58', type:'Variable'},{ipid:'59', type:'Variable'},{ipid:'60', type:'Variable'}];
var aTransformed = {};
for(var key in a) {
var obj = {};
obj[key] = a[key];
aTransformed[key.slice(1)] = { key: a[key] };
}
b = _.map(b, function (obj) {
return _.extend(obj, aTransformed[obj.ipid]);
});