我有一个 HTML 表单,我正在使用以下代码将该表单输入转换为一个对象:
var inputs = $("form :input");
var obj = $.map(inputs, function (x, y) {
return {
Key: x.name,
Value: $(x).val()
};
});
这返回给我这样的东西:
[
{"Key":"spouseFirstName","Value":"Jack"},
{"Key":"spouseLastName","Value":"Jill"},
{"Key":"numberOfChildren","Value":"2"},
{"Key":"child1Age","Value":"5"},
{"Key":"child2Age","Value":"3"},
{"Key":"","Value":"SUBMIT"}
]
但我想要的是:
[
{"spouseFirstName":"Jack"},
{"spouseLastName":"Jill"},
{"numberOfChildren":2},
...
]
请帮帮我。
最佳答案
ES5(无处不在的 javascript)
var inputs = $("form :input");
var obj = $.map(inputs, function (x, y) {
var ret = {};
ret[x.name] = $(x).val();
return ret;
});
ES2015 - 现在所有好的浏览器(不是 IE)都使用 Computed property names
var inputs = $("form :input");
var obj = $.map(inputs, function (x, y) {
return {
[x.name]: $(x).val()
};
});
如果你打算使用 ES2015,全部使用它——所有好的浏览器也可以使用 arrow functions - 注意,使用 return object literal syntax
var inputs = $("form :input");
var obj = $.map(inputs, (x, y) => ({
[x.name]: $(x).val()
})
);
或
var obj = $.map(inputs, (x, y) => ({[x.name]: $(x).val()}));
但这可能不是那么可读
并且由于您根本不使用 Y,因此可以使用箭头函数的单参数版本
var inputs = $("form :input");
var obj = $.map(inputs, x => ({
[x.name]: $(x).val()
})
);
或
var obj = $.map(inputs, x => ({[x.name]: $(x).val()}));
关于javascript - 如何从 JavaScript 对象中删除 "Key"和 "Value"文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153636/