2015-12-24 2 views
6

Почему существует разница междуJADE: разница между ними для каждого и

- for(var user in users) { 
    p= user //output: user1 
- }; 

и

each user in users 
    p= user //output: [object Object] 

по http://jade-lang.com, они aliasses, так почему они имеют различную продукцию?

Список пользователей (JSON-формат)

users = { 
    "user1": { 
     "firstname": "John", 
     "lastname": "Doe" 
    }, 
    "user2": { 
     "firstname": "Jane", 
     "lastname": "Roe" 
    } 
} 
+0

Я думаю, что это как-то связано с дефисом, но я не уверен –

+0

@ Aᴍɪʀ: в документации по http://jade-lang.com, они говорят, что для каждого из них являются aliasses, но я Думаю, я решил это (см. мой ответ внизу) Правильно ли мой ответ? –

ответ

1

Наконец нашел решение, которое работает, я должен был использовать value, index иначе объект был возвращен

each value, index in users 
    li= index //output: user1 
0

Они делают то же самое, но for - способ javascript для этого, и each - путь нефрита.

В Jade вы можете поместить - и начать писать javascript, for или while или что угодно.

С другой стороны, нефрит знает ключевое слово each, а на фоне переводит его в цикл для вас.

Это немного отличается, потому что each user in users переводит на что-то вроде

for (var key in users) { 
    var user = users[key]; 
    // the rest of the code 

Таким образом, в этом случае, user бы объект, а не только ключ, так как for итерацию JavaScript в более ключей в объекте.

+0

Хорошо, что имеет смысл, по крайней мере, если вы правы (потому что кто-то проголосовал за ваш ответ) –

+0

I * am * right. Вы можете проверить его на jade-lang.com и посмотреть. Я не знаю, почему кто-то пропустил это голосование :) –

+0

еще один вопрос: мой учитель использовал этот цикл: каждый пользователь в users.list , но я не знаю, как использовать users.list, он продолжает давать ошибки –

0

Вы не используете Jade's for, но Javascript's.

Следующая эквивалентна версии each:

for user in users 
    p= user 

В вашем случае, из-за -, вы использовали собственную версию JavaScript по for, который перебирает ключей объекта, а не над его значениями.

+0

Вы не можете написать это так .. он дает следующую ошибку: 'Невозможно прочитать свойство 'length' undefined' –

+0

@NickSpriet Похоже, что он работает только с массивами. Где вы читали, они были псевдонимами? Я не могу найти его в документах. – Darkhogg

+0

http://jade-lang.com/reference/iteration/ Это последнее предложение в каждой главе (я сделал для вас печатный экран: http://prntscr.com/9i8h68) –

Смежные вопросы