1

所以我有一些状态是一个看起来像这样的对象

object:{
  foo: Array[3]
  bar: Array[6]
}

并且对象内的条目数量可能会改变,它可能有 3 个数组,它可能有 10 个。它需要是动态的,我必须将这些显示为计数(在饼图中),它接受的数据看起来像这样, data 是 JSX 标签内的道具

data:{[
  {x:foo, y:foo.length},
  {x:bar, y:bar.length}
]}

x 输出为名称, y 输出为数字(不是百分比,lib 为我计算出来)

我试过在这里使用一些例子,比如这个线程,但我就是不明白

对 ES6 语法的偏好 &如果你有兴趣,我正在使用Victory作为我的图形库

4

2 回答 2

5

尝试使用Array.mapObject.entries

let obj = {foo : [1,2,3], bar : [1,2,3,4,5,6]};
let data = Object.entries(obj).map(([k,v]) => ({x:k, y:v.length}));
console.log(data);

于 2018-10-04T13:08:58.290 回答
0

您甚至可以简单地使用带有键的地图:(支持 ie)

const obj = {foo : [1,2,3], bar : [1,2,3,4,5,6]};
const d = Object.keys(obj).map(el => ({x:el, y:obj[el].length}));
console.log(d);

于 2018-10-04T13:19:32.267 回答