2013-12-23 73 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