使用if语句添加对象属性

时间:2016-01-31 08:23:53

标签: javascript arrays object

所以我试图在对象中添加属性,如果它在对象中已经存在

所以我的代码基本上可行

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" } 谁能告诉我如何改变它?

3 个答案:

答案 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>');

&#13;
&#13;
companies
&#13;
&#13;
&#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)

以下是按预期获得结果的修复方法。

&#13;
&#13;
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;
&#13;
&#13;