在Javascript中编辑对象的值

时间:2014-11-22 19:37:56

标签: javascript object dictionary editing

我需要编辑对象中的值。在对象的值中添加一个新单词(值)。但如果只有它已经存在,请添加这个新词。

例如:

var obj = {className:'打开菜单'}

新词(值) - '新',结果 - > obj.className ='打开菜单新'

新词(值) - '打开',结果 - > obj.className ='打开菜单' (同样)

这是我的代码:

function addClass(object, value){   
  var str = object.className;  //taking a string from object value
  var arr = str.split(' ');  // converting it to massive

  if (arr.indexOf(value) !== undefined) { //proceed if value exist 
       str = str + " " + value     // making new sring   
       object.className = str 

     {
  return object.className
}

var obj = {
  className: 'open menu'
}

console.log(addClass(obj, 'new')); // obj.className='open menu new' 
console.log(addClass(obj, 'open'));  // No change    , but I get 'open menu open' !

有什么问题?求助。

2 个答案:

答案 0 :(得分:5)

  if (arr.indexOf(value) !== undefined) { //proceed if value exist 

indexOf永远不会返回undefined。如果找不到,则返回-1。使用它,它应该没问题:

  if (arr.indexOf(value) !== -1) { //proceed if value exist 

答案 1 :(得分:2)

上面的示例中存在语法错误。 if语句未正确关闭。我怀疑这只是一个错字,因为它似乎是你在你的应用程序中运行它并获得结果。

除此之外,你是如此亲密。实际上,当 不存在 时,您希望在if语句中运行代码。如果找不到值,Array.prototype.indexOf()将返回-1,它不会返回undefined

function addClass(object, value){   
  var str = object.className;  //taking a string from object value
  var arr = str.split(' ');  // converting it to massive

  if (arr.indexOf(value) === -1) { //proceed if value DOES NOT exist 
    str = str + " " + value;     // making new sring   
    object.className = str; 
  }
  return object.className;
}

var obj = {
  className: 'open menu'
}

console.log(addClass(obj, 'new')); // obj.className='open menu new' 
console.log(addClass(obj, 'open'));  // No change    , but I get 'open menu open' !