javascript如何循环把对象变成数组形式?

后端提供数据如下

[{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},.......{avgInvestIndex:0,avgprice:3333}]

我想要的效果

[0,3333],[0,3333],[0,3333],[0,3333],[0,3333],.....[0,3333]

这是我的方法

let newbox = [];
  for (let i = 0; i < _this.artdata.length; i++) {
    newbox.push([]);
    newbox[i].push(_this.artdata[i].avgInvestIndex + ',' + _this.artdata[i].avgPrice)
   }

输出的是

["0,3333"],["0,3333"],["0,3333"],["0,3333"],["0,3333"],["0,3333"]

但是我想要的是数字格式,请问这种情况下如何处理,感谢

阅读 3.9k
7 个回答
newbox = arr.map(a => [
  a.avgInvestIndex,
  a.avgprice,
])

arr.map(item => Object.values(item))
不考虑兼容性的话,这样就可以了

[{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333}].map(d=>Object.values(d))
newbox.push(_this.artdata[i].avgInvestIndex, _this.artdata[i].avgPrice)

谢邀!

根据你的思路,把push直接改为赋值就行了

newbox[i]=[_this.artdata[i].avgInvestIndex, _this.artdata[i].avgPrice]

当然,楼上的map方式更好

let newbox = [];
  for (let i = 0; i < _this.artdata.length; i++) {
/*
    newbox.push([]);
    newbox[i].push(_this.artdata[i].avgInvestIndex + ',' + _this.artdata[i].avgPrice)
    //上面是你的代码*/
    tmp=[_this.artdata[i].avgInvestIndex , _this.artdata[i].avgPrice];
    newbox.push(tmp);
   }

其实你就差一步啊

_this = {};
_this.artdata=[{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333},{avgInvestIndex:0,avgprice:3333}];


let newbox = [];
for (let i = 0; i < _this.artdata.length; i++) {
    newbox.push([_this.artdata[i].avgInvestIndex, _this.artdata[i].avgprice]);
}

楼上很多代码都能解决问题了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题