在Angular上的数组内部转换数据类型

时间:2019-02-16 11:13:34

标签: arrays json angular multidimensional-array

我有一个动态生成的数组,它是从console.log(val)显示的,就像这样:

[{Chrome:"61.41"},{Internet Explorer:"11.84"},{Firefox:"10.85"}]

我的代码(在Angular component.ts上):

this.customerservice.getTotalCustomer().subscribe((res)=>{
   this.apiData = res;
   let result = [];
    this.apiData.forEach(item => {
      let prop = Object.keys(item)[0];
      result.push({name: prop, y: item[prop]});
    })
    console.log(result);  
})

我的问题是,是否可以像这样转换或更改我的数组格式?

[{ name: 'Chrome', y: 61.41 }, { name: 'Internet Explorer', y: 11.84 }, { name: 'Firefox', y: 10.85 }]

谢谢大家...

4 个答案:

答案 0 :(得分:2)

let newData = this.apiData.map(item => ({ name: Object.keys(item)[0], y: item[Object.keys(item)[0]] }))

答案 1 :(得分:1)

您可以使用array.reduce并按如下所示变换对象,

演示

var arrOfObj = [{"Chrome":"61.41"},{"Internet Explorer":"11.84"},{"Firefox":"10.85"}];

var result = arrOfObj.reduce(function(items, item) {
  var fixed = {};
  var keys = Object.keys(item);
  keys.forEach(function(key) {
    fixed.name = key;
    fixed.y = item[key];
  });
  items.push(fixed);
  return items;
}, []);


console.log(result);

答案 2 :(得分:1)

尝试

let arr= [{"Chrome":"61.41"},{"Internet Explorer":"11.84"},{"Firefox":"10.85"}];

let result = [];
arr.forEach(item => {
  let prop = Object.keys(item)[0];
  result.push({name: prop, y: item[prop]});
})

console.log(result);

还要检查this以获得完整的工作代码

答案 3 :(得分:0)

Array.from 是使用第二个映射参数将对象数组映射到对象的新数组的另一种方法。

const array = [{"Chrome":"61.41"},{"Internet Explorer":"11.84"},{"Firefox":"10.85"}];
const arrayConv = Array.from(array, obj => { return {"name":Object.keys(obj)[0], "y":Object.values(obj)[0] } });
console.log(arrayConv);