Есть ли способ преобразовать структуру в массив без использования цикла? - PullRequest
3 голосов
/ 26 мая 2011

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

local.array = [];
for (local.value in local.struct)
{
   arrayAppend(local.array, local.value);
}

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Соответствует ли StructKeyArray вашим требованиям?

Описание

Поиск ключей в структуре ColdFusion.

2 голосов
/ 26 мая 2011

Если вы пытаетесь поддерживать порядок в своей структуре, вы всегда можете использовать Java LinkedHashMap, например, так:

cfmlLinkedMap = createObject("Java", "java.util.LinkedHashMap").init();

cfmlLinkedMap["a"] = "Apple";
cfmlLinkedMap["b"] = "Banana";
cfmlLinkedMap["c"] = "Carrot";

for(key in cfmlLinkedMap){
    writedump(cfmlLinkedMap[key]);  
}

Вы также можете сделать то же самое более «Java», не зная, почему выхотел бы, но всегда есть опция:

//no need to init
linkedMap = createObject("Java", "java.util.LinkedHashMap");

//java way
linkedMap.put("d","Dragonfruit");
linkedMap.put("e","Eggplant");
linkedMap.put("f","Fig");

//loop through values
iterator = linkedMap.entrySet().iterator();        

while(iterator.hasNext()){
    writedump(iterator.next().value);   
}

//or

//loop through keys
iterator = linkedMap.keySet().iterator();

while(iterator.hasNext()){
    writedump(linkedMap.get(iterator.next()));  
}

Просто помните, что ключи - это регистр SeNsItIvE!

1 голос
/ 12 августа 2012

В Coldfusion 10 или Railo 4, если вам нужен массив значений (вместо ключей), вы можете использовать библиотеку Underscore.cfc примерно так:

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

valueArray = _.toArray({first: 'one', second: 'two'});// returns: ['one','two']

Примечание. Структуры Coldfusion неупорядочены, поэтому не гарантируется, что в результирующем массиве будет какой-либо определенный порядок значений.

(Отказ от ответственности: я написал Underscore.cfc)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...