Javascript:通过lodash或underscore或corejavascript转换对象响应数组 [英] Javascript: Transform array of object response via lodash or underscore or corejavascript

查看:71
本文介绍了Javascript:通过lodash或underscore或corejavascript转换对象响应数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用highChart来创建柱形图。我是如何通过与数据库通信来创建以下arrayofObj的。



现在,我需要转换以下数组对象低于输出。

  var source = [
{data:258,name:'2014'}
{data:18,name:'2016'}
{data:516,name:'2014'}
{data:0,name:'2014'}
{data :354,名称:'2014'}
{资料:18,名称:'2016'}
]`

将此数组对象转换为

 输出

[{
名称:'2014',
数据:[258,516,354]
},{
名称:'2016',
数据:[18,0 ,18]
}]

基本上,我希望我的数组按名称分组(年份)和数据应该在数组中



以下是我申请的解决方案。

  var source = []; 
_.each(source,function(singlerec){
source.push({
name:singlerec.name,
data:singlerec.data // Here Here only only single记录
});
});


解决方案

在Lodash中,我总是使用 _。groupBy 然后 _。map 到输出格式。



< pre class =snippet-code-js lang-js prettyprint-override> var source = [{data:258,name:2014},{data:18, 名称: 2016},{ 数据:516, 姓名: 2014},{ 数据:0, 姓名: 2014},{ 数据:354,名称:2014},{data:18,name:2016}]; var output = _(source).groupBy('name')。map(function(v,k){return { name:k,data:_. map(v,'data')}})。value(); console.log(output);

 < script src =https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js>< ; /脚本>  


I am working with highChart to create a column chart. Any how I reached to creating following arrayofObj via communicating with database.

Now, I require to transform following source array of object to below output.

var source = [
{data: 258, name: '2014'}
{data: 18, name: '2016'}
{data: 516, name: '2014'}
{data: 0, name: '2014'}
{data: 354, name: '2014'}
{data: 18, name: '2016'}
]`

Convert this array of object to

Output

[{
    name: '2014',
    data: [258, 516, 354]
  }, {
    name: '2016',
    data: [18, 0, 18]
}]

Basically, I want my array to group by name (year) and data should be in array

Here is the solutions which i have applied.

var source = [];
_.each(source, function(singlerec) {
      source.push({
        name: singlerec.name,
        data: singlerec.data  // Here It only assign single record
      });
    });

解决方案

In Lodash, I always use _.groupBy and then _.map to the output format.

var source = [{"data":258,"name":"2014"},{"data":18,"name":"2016"},{"data":516,"name":"2014"},{"data":0,"name":"2014"},{"data":354,"name":"2014"},{"data":18,"name":"2016"}];

var output = _(source)
  .groupBy('name')
  .map(function(v, k) { return { name: k, data: _.map(v, 'data') } })
  .value();

console.log(output);

<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

这篇关于Javascript:通过lodash或underscore或corejavascript转换对象响应数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆