将数组的对象转换为对象

时间:2016-12-06 08:09:37

标签: javascript angularjs

我有这个

[
{"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]
]` 

感谢

5 个答案:

答案 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);




答案 1 :(得分: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);




答案 2 :(得分: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)




答案 3 :(得分:0)

你可以迭代给定的数组,从关键字形成对象,用数据创建一个新数组,然后将标题取消移动到结果。



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 :(得分: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);