Редактирование значения объекта в Javascript

Мне нужно отредактировать значение в объекте. Добавьте новое слово (значение) к значению объекта. Но добавьте это новое слово, если только его там нет.

например:

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 ответа

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

indexOf никогда не вернется undefined, Если он не найден, он возвращает -1, Используйте это, и это должно быть хорошо:

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

В приведенном выше примере есть синтаксическая ошибка. Оператор 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' !

Другие вопросы по тегам