2011-06-01 2 views
0

Я хочу создать наборы данных из многомерных массивов переменной длины, но я не уверен, как лучше всего это сделать.Обработка многомерного массива переменной длины

Я подумал о вычислении перестановки массива, а затем обход значений для создания нового набора данных, но этот подход кажется хрупким.

Ниже приведены примеры входов и выходов.

Входной

[ [id: "Denver", value: ['$', '%']], [id: "datestamp", value: [201106]], [id: "price", value: [1, 2]] ] 

Ожидаемый результат

[ ["Denver$2011061"], ["Denver%2011061"], ["Denver$2011062"], ["Denver%2011062"] ] 
+4

А какой код вы написали? –

+0

@ The Tin Man: До этого момента я написал (Groovy) код, который вычисляет перестановку наборов данных «n». Я был в процессе написания метода, который будет перебирать по наборам данных в соответствии с результирующей перестановкой. Однако на данный момент нет смысла продолжать этот подход, потому что метод «комбинаций», который был ранее неизвестен мне, делает именно то, что я пытался реализовать. – Arizn52

ответ

2

Предполагая, что в Groovy, у вас есть:

def data = [ [id: "Denver", value: ['$', '%']], [id: "datestamp", value: [201106]], [id: "price", value: [1, 2]] ] 

Тогда вы можете сделать:

def output = data*.value.combinations()*.join('').collect { [ "${data[0].id}$it" ] } 

И выход будет иметь значение:

[[Denver$2011061], [Denver%2011061], [Denver$2011062], [Denver%2011062]] 
+0

+1 @tim, это красиво сделано; -) Любопытно видеть эквивалент Ruby – virtualeyes

+0

@ virtual Меня тоже! Или действительно лучшая версия Groovy (возможно, есть одна) :) –

+0

Спасибо за чистый и простой пример; Я не знал, что коллекции Groovy имеют комбинацию статического метода. Я необоснованно пытался (повторно) реализовать эту самую функциональность, и пока код для нее довольно уродлив ... – Arizn52

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