Редактирование значения объекта в 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' !