如何使用Lodash / JavaScript重新格式化此JSON?

时间:2015-05-27 20:52:19

标签: javascript json lodash

我需要重新格式化以下JSON数据

[
  {
    "name": "Hello",
    "value": 1
  },
  {
    "name": "Hello",
    "value": 11
  },
  {
    "name": "Bye",
    "value": 2
  },
  {
    "name": "Bye",
    "value": 22
  }
]

到此:

[
  {
     "Hello": 1,
     "Bye": 2
  },
  {
     "Hello": 11,
     "Bye": 22
  },
]

总会有一个对象具有相同的“名称”字段(但“值”字段中的值不同)。我被困住了,不知道如何解决这个问题。是否可以使用Lodash或纯JavaScript?

1 个答案:

答案 0 :(得分:3)

我从未听说过Lodash,但在纯JS中,这可以用两个嵌套循环来解决:

function myConvert(long)
{
    var short = [];
    for(var i = 0; i < long.length; i++)
    {
        var key = long[i].name;
        var value = long[i].value;
        var object = null;
        for(var j = 0; j < short.length; j++)
        {
            if(short[j][key] === undefined)
            {
                object = short[j];
                break;
            }
        }
        if(object === null)
        {
            object = {};
            short.push(object);
        }
        object[key] = value;
    }
    return short;
}

这基本上是:

迭代long的所有元素。
对于其中的每一个,迭代short的所有元素,以查找未定义当前name作为键的第一个元素。
如果找不到,则创建一个新对象 将当前value添加到object,并将name作为密钥。