如何从JavaScript对象中删除“键”和“值”文本

How to I remove "Key" and "Value" text from JavaScript Object?

本文关键字:文本 删除 JavaScript 对象      更新时间:2023-09-26

我有一个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 (运行 eveywhere 的 JavaScript)

var inputs = $("form :input");
var obj = $.map(inputs, function (x, y) {
    var ret = {};
    ret[x.name] = $(x).val();
    return ret;
});

ES2015 - 现在所有好的浏览器(不是IE)都使用计算属性名称

var inputs = $("form :input");
var obj = $.map(inputs, function (x, y) {
    return {
        [x.name]: $(x).val()
    };
});

如果你打算使用ES2015,那就全部使用——所有好的浏览器也可以使用箭头函数——注意,使用返回对象文字语法

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()}));