如何从JavaScript对象中删除“密钥”和“值”文本?

时间:2016-02-02 12:32:25

标签: javascript jquery

我有一个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},
  ...
]

请帮帮我。

1 个答案:

答案 0 :(得分:6)

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