我需要重新格式化以下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?
答案 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
作为密钥。