2016-12-06 244 views
2

我有这个转换对象为对象

[ 
{"2015":11259750.05}, 
{"2016":14129456.9} 
] 

,我想将其转换为

[ 
[2015,11259750.05], 
[2016,14129456.9] 
] 

是有使用JavaScript,我们可以做到这一点的任何功能。

刚刚结束我有一个头,以及我要与上述结果包括,

[ 
    {"label":"SecuredYear","type":"string"}, 
    {"label":"ValueInDh‌​s","type":"number"} 
] 

上面沿那么它应该看起来像`

[[ 
    {"label":"SecuredYear","type":"string"}, 
    {"label":"ValueInD‌​hs","type":"number"}‌​ 
], [2015,11259750.05],[2016,14129456.9] 
]` 

感谢

+2

你知道最终的结果你是在要求一个'数组(多维数组)的数组''而不是'对象',因为你标题 –

回答

0

你可以迭代给定的数组,取对象的关键,用da创建一个新的数组ta,然后取消标题的结果。

var header = [{ label: "SecuredYear", type: "string" }, { label: "ValueInDh‌​s", type: "number" }], 
 
    data = [{ "2015": 11259750.05 }, { "2016": 14129456.9 }], 
 
    result = data.map(function (o) { 
 
     var k = Object.keys(o)[0]; 
 
     return [+k, o[k]]; 
 
    }); 
 

 
result.unshift(header); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

4

使用Array#map方法用Object.keys方法生成数组,然后在开始时使用Array#unshift方法添加原始数组。

var data = [{ 
 
    "2015": 11259750.05 
 
}, { 
 
    "2016": 14129456.9 
 
}]; 
 

 
// iterate over the array to generate new array 
 
var res = data.map(function(v) { 
 
    // get the property name from object 
 
    var k = Object.keys(v)[0]; 
 
    // generate element of the array 
 
    return [k, v[k]]; 
 
    // if you want to convert property name to number then 
 
    // return [+k, v[k]]; 
 
}); 
 

 
// add the original array at beginning 
 
res.unshift(data); 
 

 
console.log(res);

0

您可以循环阵列,并且然后提取每个对象,如下所示键Object.keys(obj)[0]并将其值obj[key]

使用parseint()到您的字符串数据转换(在你的情况的对象密钥)转换成整数

var data = [{ 
 
    "2015": 11259750.05 
 
}, { 
 
    "2016": 14129456.9 
 
}]; 
 

 
var newData = []; 
 

 
data.forEach(function(obj,index){ 
 
    var key= Object.keys(obj)[0]; 
 
    newData.push([parseInt(key,10),obj[key]]); 
 
}); 
 

 
console.log(newData);

+0

,但如何转换“2015”到2015 – Saleem

+0

@Saleem更新回答 –

+0

非常感谢它解决了我的问题。 – Saleem

0

var data =[{"2015":11259750.05},{"2016":14129456.9}] 
 
var res=[]; 
 

 
    data.map(function(a){ 
 
    Object.keys(a).forEach(function(b){ 
 
    res.push([parseInt(b),a[b]]) 
 
    }) 
 
       
 
    }) 
 
    console.log(res)

+1

@Saleem,请添加信息的问题。 –

0

试试这个,它正在按照您的期望:

var jsonObj = [ 
 
{"2015":11259750.05}, 
 
{"2016":14129456.9} 
 
]; 
 

 
var newArr = []; 
 
for (var i in jsonObj) { 
 
    var objKeys = Object.keys(jsonObj[i]); 
 
    newArr.push(Object.keys(jsonObj[i])); 
 
    newArr[i].push(jsonObj[i][objKeys[0]]); 
 
} 
 

 
console.log(newArr);