首页 > 解决方案 > 如何在Javascript中制作json数据?

问题描述

我有一个如下所示的数组:

[
        {
            name: "ReceiverId",
            value: "1"
        },
        {name: "TransSequence", value: "KPJ7dL2pmx0njInNRAzUug"},
        {
            name: "email-address",
            value: "xcv@cvb.com"
        },
        {
            name: "mobile-number",
            value: "9321313213"
        },
        {
            name: "ReceiverId",
            value: "2"
        },
        {
            name: "TransSequence",
            value: "KPJ7dL2pmx0njInNRAzUug"
        },
        {
            name: "email-address",
            value: "xcv@cvb.com"
        }


    ]

现在我想让我的 json 数据看起来像这样:

{
    "MainData": [
      {
      "TransSequence": "wpiuVJw",
        "ReceiverId": "1",    
        "ReceiverEmail": "xcv@cvb.com",
        "ReceiverMobileNo": "9321313213",
      },
      {  
        "TransSequence": "xowpiuVJw",
        "ReceiverId": "2",    
        "ReceiverEmail": "xcv@cvb.com",
        "ReceiverMobileNo": "9321313213",
      }
    ]
    }

但是我尝试了下面的代码片段:

mArr = []
obj = {};
for(var i=0; i<mainArr.length; i++){

//  obj = {};
    for(j = 0; j < 4; j++){
        obj[mainArr[i].name] = mainArr[i].value
    }
}

但上面的代码片段只返回最后一个值。但是,我也尝试将其转换为基于字符串的 json,但在最后一个数组中,它,在解析时返回错误。

帮助将不胜感激!

标签: javascriptjson

解决方案


根据您尝试的代码,您正在使用 js。

在 js 中,可以使用reduce对数组进行汇总。用于Object.assign组合对象。

let arr = [{"name":"ReceiverId","value":"1"},{"name":"TransSequence","value":"KPJ7dL2pmx0njInNRAzUug"},{"name":"email-address","value":"xcv@cvb.com"},{"name":"mobile-number","value":"9321313213"},{"name":"ReceiverId","value":"2"},{"name":"TransSequence","value":"KPJ7dL2pmx0njInNRAzUug"},{"name":"email-address","value":"xcv@cvb.com"},{"name":"mobile-number","value":"9321231321"},{"name":"ReceiverId","value":"1"},{"name":"TransSequence","value":"KPJ7dL2pmx0njInNRAzUug"},{"name":"email-address","value":"xcv@cvb.com"},{"name":"mobile-number","value":"9321231321"},{"name":"ReceiverId","value":"2"}];


let propertyCount = 4;
let result = arr.reduce((c, v, i) => {
  let o = Math.floor(i / propertyCount);
  c[o] = c[o] || {};
  c[o] = Object.assign(c[o], {[v.name]: v.value});
  return c;
}, []);

console.log(result);


推荐阅读