按列分组json数据 [英] group json data by columns

查看:100
本文介绍了按列分组json数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有json数组

let arr = [
  { EMAIL: 'john@example.com', LASTNAME: 'Smith', FIRSTNAME: 'John', SMS: '33123456789' },
  { EMAIL: 'harry@example.com', LASTNAME: 'Pierce', FIRSTNAME: 'Harry', SMS: '33111222222' },
  { EMAIL: 'howard@example.com', LASTNAME: 'Paige', FIRSTNAME: 'Howard', SMS: '33777888898' },
];

我想要类似

EMAIL : {"john@example.com","harry@example.com","howard@example.com"}
LASTNAME={"Smith", "Pierce","Paige"}

我尝试了很多事情,我想出了一种使用列名列为核心的解决方案

i tried many things , i came up with one solution with hardcore column name

var arr3=["EMAIL", "LASTNAME", "FIRSTNAME", "SMS"];

let arr_email=[];

arr.forEach(function(e, i) {

    arr_email.push(arr[i]['EMAIL']) 
})

var arr2=[];

arr2.push({"EMAIL":arr_email});

但是我正在寻找通用解决方案.我不想传递硬核列名称. 请建议

But I am looking for generic solution . I dont want to pass hardcore column name. please suggest

推荐答案

已更新:修复了命名和初始化问题,以使所有内容保持一致.

Updated: Fixed naming and initialisation to make everything consistent.

使用类似这样的内容:

let arr=[{EMAIL: "john@example.com", LASTNAME: "Smith", FIRSTNAME: "John", SMS: "33123456789"}
    ,{EMAIL: "harry@example.com", LASTNAME: "Pierce", FIRSTNAME: "Harry", SMS: "33111222222"}
    ,{EMAIL: "howard@example.com", LASTNAME: "Paige", FIRSTNAME: "Howard", SMS: "33777888898"}]
let newObject = {}

arr.forEach(element => {
  Object.keys(element).forEach(key => { 
  if(!newObject[key]) {
    newObject[key] = []
  }
  newObject[key].push(element[key]) 
  })
})

因此,您将拥有:

console.log(newObject)

类似的东西:

EMAIL: (3) ["john@example.com", "harry@example.com", "howard@example.com"]
FIRSTNAME: (3) ["John", "Harry", "Howard"]
LASTNAME: (3) ["Smith", "Pierce", "Paige"]
SMS: (3) ["33123456789", "33111222222", "33777888898"]

这篇关于按列分组json数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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