我有一个数组
[
{"field" : "flight1", "value" : "123"},
{"field" : "flight2", "value" : "456"}
]
是否有可能成为键值对?
{
"flight1" : "123",
"flight2" : "456"
}
我有一个数组
[
{"field" : "flight1", "value" : "123"},
{"field" : "flight2", "value" : "456"}
]
是否有可能成为键值对?
{
"flight1" : "123",
"flight2" : "456"
}
您可以使用reduce()
函数并将对象作为结果返回。
var arr = [{"field" : "flight1", "value" : "123"},{"field" : "flight2", "value" : "456"}]
var result = arr.reduce(function(r, e) {
r[e.field] = e.value;
return r;
}, {});
console.log(result)
new Map()
构造函数可以为您完成此操作:
var data = [
{"field": "flight1", "value": "123"},
{"field": "flight2", "value": "456"}
];
var result = new Map(data.map(obj => [obj.field, obj.value]));
Map
对象,它们几乎与普通对象完全相同,只是稍微易于迭代,并且具有.size
属性。var result = Object.fromEntries(data.map(obj => [obj.field, obj.value]));
var data = [{ field: "flight1", value: "123" }, { field: "flight2", value: "456" }],
result = Object.assign(...data.map(a => ({ [a.field]: a.value })));
console.log(result);
map
returns an array of objects, not a single object. The OP wants {a:1,b:2}
, not [{a:1},{b:2}]
- KobiObject.fromEntries()
呢?它比你的示例要简单一些。 - Simon Eastfor
循环:
var data = [{"field" : "flight1", "value" : "123"},{"field" : "flight2", "value" : "456"}];
var obj = {};
for (var i = 0; i < data.length; i++)
obj[data[i].field] = data[i].value;
console.log(obj);
{
flight1:“123”,
flight2:“456”
}
我的问题是我过早地转换了序列化的数组,导致了许多微小的问题。以下是不起作用的代码:
var data = $('#myform').serializeArray();
data = JSON.stringify(data);
data,result = Object.assign(...data.map(a => ({ [a.name]: a.value })));
database.addUser(result);
请注意,flight1和flight2失去了双引号。以下是我的解决方案:
var data = $('#myform').serializeArray();
data,result = Object.assign(...data.map(a => ({ [a.name]: a.value }))); //result was already turned into a JSON array
database.addUser(result);
注意:这是一个使用Electron框架将用户信息提交到数据库(neDB)的代码。
Object.fromEntries(data.map(obj => [obj.field, obj.value]));
- Simon East