JavaScript对象转换

时间:2014-11-14 03:39:35

标签: javascript arrays javascript-objects

我有一个对象数组和2个数组来进行比较。基于数组中元素和对象中键的比较,需要将对象转换为新对象。

例如

原始对象如下

[{
'Period 1': 1000.00
'Period 2': 2500.00
'Period 3': 1500.00
'Product': 'ABC'
},
{
'Period 1': 3000.00
'Period 2': 1500.00
'Period 3': 2500.00
'Product': 'XYZ'
}]

数组如下

var arr1 = ['Product']
var arr2 = ['Period 1','Period 2','Period 3']

基于对象中上述数组的比较的预期结果必须如下

[
{
'name': 'ABC'
'data': [1000.00,2500.00,1500.00]
},
{
'name': 'XYZ'
'data': [3000.00,1500.00,2500.00]
}
]

2 个答案:

答案 0 :(得分:-1)

使用类似下面的内容来实现所需的对象类型

var finalArr = [];
for (var i = 0; i < obj.length; i++) {
    var tempArr = [];
    var tempObj = {};
    for (var j = 0; j < arr2.length; j++) {
        tempArr.push(parseFloat(obj[i][arr2[j]]))
    }
    tempObj.name = obj[i][arr1];
    tempObj.data = tempArr;
    finalArr.push(dataTemp);
}

答案 1 :(得分:-1)

试试这段代码:

希望有所帮助。

var ori = [{
'Period 1': 1000.00,
'Period 2': 2500.00,
'Period 3': 1500.00,
'Product': 'ABC'
},
{
'Period 1': 3000.00,
'Period 2': 1500.00,
'Period 3': 2500.00,
'Product': 'XYZ'
}];

function oriVal(prop){
var arr = new Array();
for(var i = 0;i < ori.length; i++){
for(var p in ori[i]){
if(p == prop){arr.push(ori[i][p]);}
}
}
return arr;
}

Array.prototype.pushRange = function(arr){
for(var i = 0;i < arr.length; i++){
this.push(arr[i]);
}
}

function formName(keyArr){
var retArr = formArr(keyArr);
return {name:retArr.join(',')};
}

function formData(keyArr){
var retArr = formArr(keyArr);
return {data:retArr.join(',')};
}

function formArr(keyArr){
var retArr = new Array();
for(var i = 0;i < keyArr.length;i++){
var oArr = oriVal(keyArr[i]);
retArr.pushRange(oArr);
}
return retArr;
}

function nameData(){
var nameObj = formName(["Product"]);
var dataObj = formData(['Period 1','Period 2','Period 3']);
return {name:nameObj['name'],data:dataObj['data']};
}

console.log(nameData());