2013-05-14 1 views
1

У меня есть синтаксис, основанный на тегах, который работает в Railo.ColdFusion - цикл коллекции в cfscript

<cfloop collection="#myArray#" item="j" index="i"></cfloop> 

Вышеприведенное позволяет мне получить доступ к индексу «i» и самому элементу «j».

Я хочу сделать то же самое в cfscript, так что я использовал:

for (i in myArray) {} 

Однако, «я» дает мне пункт ... как я могу получить доступ значение по индекса?

В работе вокруг, мне пришлось вручную рассчитывать индекс так:

j = 1; 
for (i in myArray) { 
j++; 
} 

Но это чувствует себя грязным. Поддерживает ли for в синтаксисе cfscript истинную альтернативу коллекции cfloop?

Я пробовал Google искать все это, но никогда не получал достойного результата. Есть ли способ переписать мой цикл for, чтобы я мог также получить доступ к индексу?

Thanks, Mikey.

ответ

1

Это не возможно в ColdFusion, боюсь, кроме того, что вы используете в настоящий момент, или просто используете индексированный цикл.

Однако в Railo, есть это (скорее ужасный тег/скрипт гибридный синтаксис):

<cfscript> 
    loop array=[5,4,3,2,1] index="i" item="v" { 
     writeOutput("[#i#][#v#]<br>"); 
    } 
</cfscript> 

Так в основном это <cfloop> без угловых скобок.

+0

Это настоящий позор! Я надеялся, что в этом синтаксисе будет элегантный способ, но мои подозрения были правильными. Спасибо за ответ. –

+0

NP. BTW, этот синтаксис CFLOOP, который вы используете, - * Только Railo *. * * * Не действует в CF. Вы можете обновить свой текст. –

+0

Там в лжи моя проблема. Я думаю, что Railo реализовал (довольно хороший) способ сделать это с помощью тегов, но почувствовал необходимость соблюдения ACF в своей версии скрипта. Вот досада! Я также отредактировал свой пост, чтобы исправить мою ложную инструкцию. –

1

В CF 10 и Railo 4 вы можете использовать Underscore.cfc library.

_ = new Underscore();// instantiate the library 

_.each(myArray, function(item, index) { 
    // code here 
}); 

Хотя лично я предпочел бы использовать один из других функциональных методов, такой map или reduce, в зависимости от того, что вы пытаетесь сделать.

Примечание: я написал Underscore.cfc

+0

Это довольно круто! Благодарю. –

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

  • Нет связанных вопросов^_^