javascript - 如何从 JavaScript 对象中删除 "Key"和 "Value"文本?

标签 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},
  ...
]

请帮帮我。

最佳答案

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/

相关文章:

javascript - 使用 Laravel Mentions(at.JS 和 Laravel)返回用户名及其 ID

javascript - jquery 专注于负载

javascript - 如何从 JS 横幅中剪切形状?

javascript - 将 JSON 对象插入数组

jQuery TimePicker 和 jQueryUI 1.8.7 冲突

javascript - 将下载字符串作为文本文件发出

Javascript/jQuery OR 运算符在 attr 值上无法正常工作

javascript - 如何更改全日历月份中的天数

jquery - 使用 jquery 和 Coldfusion 选择由 json 响应填充的框

Javascript/jQuery : nesting loops, 防止覆盖对象属性