我需要编辑对象中的值。在对象的值中添加一个新单词(值)。但如果只有它已经存在,请添加这个新词。
例如:
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' !
有什么问题?求助。
答案 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' !