所以我试图在对象中添加属性,如果它在对象中已经存在
所以我的代码基本上可行
Psudo :(如果对象中存在属性,则已将其添加到其中)
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'我需要它与" popped"的项目相同在数组的末尾,所以在这种情况下,数组中的最后一项是" milly"所以我需要对象说 {milly:1} 或 {milly:" 1" } 谁能告诉我如何改变它?
答案 0 :(得分: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>');
。
companies
&#13;
答案 1 :(得分:0)
应该是
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);
答案 2 :(得分:0)
以下是按预期获得结果的修复方法。
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);
&#13;