JavaScript是否具有对象文字的简写形式,可以自动为属性分配一个值,该值是属性名称的字符串?

如何解决JavaScript是否具有对象文字的简写形式,可以自动为属性分配一个值,该值是属性名称的字符串?

我了解在ES2015 +中,而不是写:

let myObject = { a: "a",b: "b",c: "c" };

我可以使用对象速记编写以下内容

let a = "a";
let b = "b";
let c = "c";

let myObject = { a,b,c };
console.log(myObject);

但这与我正在寻找的简写不一样。

有没有一种方法可以声明对象文字而无需先定义变量,并且该对象文字属性将被自动分配为对象属性名称的字符串化值? >

即我写了类似的东西:

let myObject = { a,c };

,它会自动解析为:

let myObject = { a: "a",c: "c" };

还是这种 shorter 简写根本不可能?


此问题的一些背景:

我的用例是接受用户名称-值对。后者足够简单。对于前者,我不希望用户跳过添加名称 然后添加相同的只要一个就够了。

解决方法

{a,b,c}ab都不是定义变量时,没有语法可以理解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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?