2013-12-23 129 views
0

我写了一个将数组转换为对象的函数n数组值是对象中值为true的属性。将数组转换为对象并将对象属性设置为javascript中的数组值

在我的代码下面的第一部分工作正如预期。它使用数组值创建一个对象并将对象值设置为true。在我的第二个代码示例中,我试图在某些对象属性具有与true不同的值的地方进行一些改进。我被困在如何让这个工作。

var myArray = ['mike', 'jenn', 'fred', 'jonny', 'frank']; 

var myFunc = function (array) { 
    var myObj = {}; 
    for (var i = 0; i < array.length; i += 1) { 
     myObj[array[i]] = true; 
    } 
    return myObj; 
}; 


var myFunc = function (array) { 
    var myObj = {}; 
    for (var i = 0; i < array.length; i += 1) { 
     if (array[i] = 'jenn') { 
     myObj[array[i]] = 'is awesome'; 
     } else if (array[i] = 'mike') { 
     myObj[array[i]] = 'is a rookie'; 
     } else { 
     myObj[array[i]] = 'help'; 
     } 
    } 
    return myObj; 
}; 
+0

javascript'='用于赋值,'=='用于比较值,'==='用于比较值和类型。 我的代码,你已经通过使用单个'='分配值,你需要使用'=='或'==='作为比较 –

回答

2

您正在使用赋值运算符而不是比较运算符。你可以这样

if (array[i] === 'jenn') { 
... 
} else if (array[i] === 'mike') { 
... 

修复它现在,你可能会奇怪,为什么===代替==,像大多数语言。原因是,类型强制。即使被比较的数据类型不同,==也会尝试将其中的任何一种转换为另一种类型,并产生结果。但在大多数情况下,这是不希望的。

===只有当变量的类型也相同且值也匹配时才会将表达式评估为true。因此,最好使用===

+0

你真棒,它一定是迟到因为我这样做,但必须有一个打字错误,所以我把它切换出来,现在它的工作;) – jstone

+0

@jstone不客气:)请考虑接受这个答案,如果它可以帮助你:) – thefourtheye