![](/img/trans.png)
[英]JavaScript - adding properties to an object using the spread syntax within a ternary statement
[英]adding object properties with an if statement
所以我试图将一个属性添加到一个对象, 如果它不存在于对象中
所以我的代码基本上可以正常工作
伪:(如果该属性确实存在于对象中,则已经将其添加到其中)
var names= ["james", "kate", "kara", "milly"];
var storage = {};
var testElement = arr.pop();
if(typeof(storage.testElement==='undefined')){
storage.testElement = '1';
}
else{
storage.testElement = storage.testElement + 1;
}
return console.log(storage);
就像我说的那样,我从控制台日志中得到的输出是{testElement:“ 1”}在上面说'testElement'的地方,我需要将其与从末尾“弹出”的项目相同数组,因此在这种情况下,数组中的最后一项是“ milly”,因此我需要对象说{milly:1}或{milly:“ 1”}有人可以告诉我如何更改它吗?
请在[]
包装用于对象访问的变量
storage[testElement]
并将行更改为
if (typeof storage[testElement] === 'undefined') {
否则,你得到typeof
的比较。
var names= ["james", "kate", "kara", "milly"]; var storage = {}; var testElement = names.pop(); if (typeof storage[testElement] === 'undefined') { storage[testElement] = '1'; } else { storage[testElement] = storage[testElement] + 1; } document.write('<pre>' + JSON.stringify(storage, 0, 4) + '</pre>');
它应该是
if(storage[testElement] === undefined)
和工作代码,使用hasOwnProperty
检查属性是否可用,然后使用[]
表示法添加/修改属性
var names= ["james", "kate", "kara", "milly"];
var storage = {};
var testElement = names.pop();
if(!storage.hasOwnProperty(testElement)){
storage[testElement] = '1';
}
else{
storage[testElement] = storage[testElement] + 1;
}
return console.log(storage);
这是获得预期结果的解决方案。
var names= ["james", "kate", "kara", "milly"]; var storage = {}; var testElement = names.pop(); if(typeof storage[testElement] === 'undefined'){ storage[testElement] = '1'; } else{ storage[testElement] = storage[testElement] + 1; } console.log(storage);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.