2016-04-28 98 views
1

我正在學習玉石,並試圖對它進行迭代。爲什麼我的玉石代碼不起作用?

這是我的玉代碼,

body 
    - var users = ['one','two', 'three'] 
    - var roles = ['admin', 'user', 'stranger'] 
    for user in users 
    - if (user.role == 'admin') 
     p #{user} is an admin 
    - else 
     p= user.name 
    for user in users 
    ul 
     li= user 

它打印ul列表,但它不打印我的第一次迭代。我在這裏錯過了什麼嗎?我是否必須製作user.role數組?如果我應該,我該如何製作它們?

在此先感謝!

回答

1

如果你的第一個循環需要工作,需要像下面的代碼:

body 
- var users = [{role:'admin',name:'one'},{role:'user',name:'two'}, {role:'stranger',name:'three'}] 
- var roles = ['admin', 'user', 'stranger'] 
for user in users 
    - if (user.role == 'admin') 
     p #{user.name} is an admin 
    - else 
     p= user.name 
+0

我試圖用迭代來分配它的角色。我所做的是'爲用戶,在用戶,角色中扮演角色'和'p:#{user}:#{role}'但我的角色不打印。我是否應該一直像你一樣手動分配? – jaykodeveloper

+0

關於「我試圖用迭代來分配它的角色」,但是我沒有從你的原始代碼中看到它。手動不是必須的。但是,您需要確保用戶是具有名稱和角色的對象數組。在你的原始代碼中,用戶只有一個字符串數組,它不是具有角色和名字的對象數組。 –

0

在這兩個對你遍歷字符串數組循環:var users = ['one','two', 'three'] 所以在這兩個循環user將這些值的一個字符串。

在您的第一個for循環中,您嘗試訪問user變量的role屬性。但由於它是一個字符串,因此不存在這樣的屬性,並且您的if語句的計算結果爲False

在第二個循環中,您直接使用user而不嘗試訪問不存在的屬性。這就是它工作的原因。

+0

感謝您不錯的解釋洋蔥頭。 – jaykodeveloper

相關問題