如何将对象数组插入另一个数组?

时间:2018-06-13 10:28:52

标签: javascript arrays echarts

我从Api获得的数据如下所示:

var arrayX = [{key: "GET", doc_count: 12},
{key: "POST", doc_count: 381}]

我想要显示此键的值'键'和' doc_cont'在图表中。 图表格式如下:

" ....
data: [{value: 'Doc_count' information of 'POST' key information will come in this field, name: 'POST'},
       {value: put, name: 'PUT'},
       {value: get, name: 'GET'}]
..."

当我想为' doc_count'分配值时在' arrayX',' undefined'归还。

for (var i = 0; i <= arrayX.length; i++) {
            if (arrayX[i].key == 'POST') {
                var post = arrayX[i].doc_count;
            }
            else if (arrayX[i].key == 'PUT') {
                var put = arrayX[i].doc_count;
            }
            else if (arrayX[i].key == 'GET') {
                var get = arrayX[i].doc_count;
            }
}

我该如何解决这种情况? 我希望我的问题清楚。

2 个答案:

答案 0 :(得分:0)

你很接近,这里唯一的问题是你的循环条件。

改变这个:

for (var i = 0; i <= arrayX.length; i++)

对此:

for (var i = 0; i < arrayX.length; i++)

我已将<=更改为<

如果您使用<=,则会得到0,1和2的索引,因为您在arrayX中没有索引2,您将获得异常(数组索引从0开始)。

您可以在Arrays index

中阅读更多内容

答案 1 :(得分:0)

根据我的理解,您希望转换以下结构的数组:

[{key: "GET", doc_count: 12}, {key: "POST", doc_count: 381}]

进入:

[{name: "GET", value: 12}, {name: "POST", value: 381}]

为此目的,Array.prototype.map()可能是更具描述性的方式。 来自官方docs

  

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

&#13;
&#13;
var arrayX = [{
  key: "GET",
  doc_count: 12
}, {
  key: "POST",
  doc_count: 381
}]

var chartData = arrayX.map((item) => {
  return {
    name: item.key,
    value: item.doc_count
  }
});

console.log(chartData)
console.log(arrayX)
&#13;
&#13;
&#13;