我有一个空对象。
let obj = {};
现在我有一些if
条件,我希望通过这些条件将新属性分配到我的obj
对象
If(name = 'Alex) {
obj = {name: 'Alex'}
} else {
obj = {name: 'Bill'}
}
但它似乎不起作用。我也使用了Object.assign({}, name: 'Bill')
,但它也没有用。你知道为什么会发生这种情况以及如何达到预期的效果吗?
答案 0 :(得分:4)
试试这个
let obj = {};
obj.name = name || 'Bill';
您的if
条件有name = 'Alex'
之类的作业,而不是像name === 'Alex'
那样的比较。修复将起作用。
答案 1 :(得分:1)
问题是你替换对象,而不是分配给它的属性。这是你如何做到的:
obj.prop = value;
例如,在您的情况下:
obj.name = 'Alex';
答案 2 :(得分:1)
你有两个问题。 name= 'Alex'
不是比较事物的正确语法。 =
分配值而不是检查,应为name == 'Alex'
。
其次,分配对象属性的正确语法是
obj['name'] = 'Alex';
甚至更好obj.name = 'Alex';
所以
if(name == 'Alex') {
obj.name = 'Alex';
} else {
obj.name = 'Bill';
}
答案 3 :(得分:1)
问题:
当您撰写If
而不是if
您将'Alex
分配给名为name
的变量,该变量不存在。您需要将其分配给obj.name
。
您没有关闭'Alex
,您需要关闭'Alex'
您重新创建了已创建的对象,因此您不会为对象分配新属性,而是使用某些属性创建新对象。
可能的解决方案:
最贴近您的代码:
if(!(obj.name = 'Alex)) {
obj.name = 'Bill'; //We assign 'Alex' as name and if it is falsey, then override it with 'Bill'
}
最短:
obj.name = 'Alex' || 'Bill'
;
如果'Alex'
为真,则会obj.name
分配给'Alex'
,否则会'Bill'
。
非常明确:
if ('Alex') {
obj.name = 'Alex';
} else {
obj.name = 'Bill';
}
您可以选择最接近您口味的那个,但请注意'Alex'
始终是真实的。