JavaScript 是否有对象文字 shorthand 自动分配给 属性 一个值,该值是 属性 名称的字符串?
Does JavaScript have an object literal shorthand which automatically assigns to a property a value which is a string of the property name?
我理解在 ES2015+ 中,而不是写:
let myObject = { a: "a", b: "b", c: "c" };
我可以使用对象 shorthand 编写以下内容:
let a = "a";
let b = "b";
let c = "c";
let myObject = { a, b, c };
console.log(myObject);
但这与我正在寻找的 shorthand 不一样。
有没有一种方法可以声明对象文字 而无需先定义变量 并且该对象文字的属性将自动分配值,这些值是对象的字符串化版本属性 个名字?
即我写了类似这样的东西:
let myObject = { a, b, c };
它会自动解析为:
let myObject = { a: "a", b: "b", c: "c" };
或者那种更短 shorthand根本不可能吗?
这个问题的一些背景:
我的用例接受来自用户的值和名称-值对。后者很简单。对于前者,我不希望让用户跳过添加 name and 然后添加相同的 值 一个就够了。
当 a
、b
和 c
中的 none 是已定义变量时,没有语法可以理解 {a, b, c}
。此外,它不会提供有关这些值的数据类型的线索,因此对于字符串,您需要字符串值,而不是(未定义的)变量引用。
从评论来看,您似乎以字符串形式获得用户输入,其中包括一系列对和单个值。
这是一个可以解析这样一个字符串的函数:
const toObject = str =>
Object.fromEntries(
str.split(" ")
.map(pair => pair.split("^"))
.map(([k, v]) => [k, v??k])
);
let s = "name^John male height^185cm";
let obj = toObject(s);
console.log(obj);
我理解在 ES2015+ 中,而不是写:
let myObject = { a: "a", b: "b", c: "c" };
我可以使用对象 shorthand 编写以下内容:
let a = "a";
let b = "b";
let c = "c";
let myObject = { a, b, c };
console.log(myObject);
但这与我正在寻找的 shorthand 不一样。
有没有一种方法可以声明对象文字 而无需先定义变量 并且该对象文字的属性将自动分配值,这些值是对象的字符串化版本属性 个名字?
即我写了类似这样的东西:
let myObject = { a, b, c };
它会自动解析为:
let myObject = { a: "a", b: "b", c: "c" };
或者那种更短 shorthand根本不可能吗?
这个问题的一些背景:
我的用例接受来自用户的值和名称-值对。后者很简单。对于前者,我不希望让用户跳过添加 name and 然后添加相同的 值 一个就够了。
当 a
、b
和 c
中的 none 是已定义变量时,没有语法可以理解 {a, b, c}
。此外,它不会提供有关这些值的数据类型的线索,因此对于字符串,您需要字符串值,而不是(未定义的)变量引用。
从评论来看,您似乎以字符串形式获得用户输入,其中包括一系列对和单个值。
这是一个可以解析这样一个字符串的函数:
const toObject = str =>
Object.fromEntries(
str.split(" ")
.map(pair => pair.split("^"))
.map(([k, v]) => [k, v??k])
);
let s = "name^John male height^185cm";
let obj = toObject(s);
console.log(obj);