如果对象存在,将项目添加到对象中;如果对象不存在,则创建新对象。

3
我需要在对象存在的情况下向其添加一个项目,否则我需要创建一个新对象并添加该项目。
我知道Object.assign函数的存在,但我不确定如何使用它。
目前这是我尝试过的内容:
var myvar = obj ? Object.assign(obj, { "myvar" : "myvalue" }) : { "myvar" : "myvalue" };

这是正确且更简洁的方法吗?


1
你可以简单地使用Object.assign({},obj, { "myvar" : "myvalue" }),不需要使用三元运算符。 - undefined
@AZ_ 它运行良好,而且似乎比我的解决方案更简洁。谢谢 - undefined
@AZ_ 如果 obj 没有定义(使用 Firefox),我会收到一个引用错误。 - undefined
@Frazer,你必须先定义变量。 - undefined
4个回答

2

我个人在编程项目中经常这样做:

var forms = forms || {};

forms.state = forms.state || {};

如果“forms”以前未定义或为空,则第一行将创建一个新对象。否则,“forms”将被赋值为其先前的值。(当我有只使用简单的JS或Jquery应用程序时,我经常使用它),这使我可以在不关心文件加载顺序的情况下对我的应用进行命名空间处理。
第二行检查对象“state”是否已存在。如果它已存在,则将“forms.state”赋值给“forms.state”。否则,它会创建一个新对象。

我不理解这段代码。如果对象存在,我需要向对象中添加新项。 - undefined
@GiacomoM 我添加了一些细节,请告诉我是否适合你。 - undefined

1

尝试

(obj||{})["myvar"] = "myvalue"

obj = { test: 'ok' };

var myvar = (obj||{})["myvar"] = "myvalue";

console.log(myvar);
console.log(obj);


这是一个有趣的解决方案。肯定比我的小。 - undefined

1

可以使用对象展开运算符。

var myvar = { ...obj, "myvar": "myvalue"}

-1

测试对象是否已定义。

let obj = null;

if (typeof obj === "undefined") obj = {};
let updatedObj = Object.assign({},obj, {"myVar": "my value"});

console.log(updatedObj);

// or in one line
let obj2 = null;

let updatedObj2 = (typeof obj2 === "undefined")? {"myVar": "my value"} : Object.assign({},obj2, {"myVar": "my value"});

console.log(updatedObj2);

编辑:如果 objnull


如果obj被定义但未初始化,会怎么样? - undefined
typeof obj === "undefined"将会是true或者我漏了什么。 - undefined
它将是undefined,但这个检查更适用于“未定义”的变量。此外,你的代码对于obj = null会失败。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接