Я пытаюсь заставить функцию перестановок работать, но это меня сбивает с толку.Функция перестановки массива
пример набора данных:
{
a: [1,2],
b: [1,2,3],
c: [1,2]
}
желаемый результат:
[
[ 'a-1', 'b-1', 'c-1' ],
[ 'a-1', 'b-1', 'c-2' ],
[ 'a-1', 'b-2', 'c-1' ],
[ 'a-1', 'b-2', 'c-2' ],
[ 'a-1', 'b-3', 'c-1' ],
[ 'a-1', 'b-3', 'c-2' ],
[ 'a-2', 'b-1', 'c-1' ],
[ 'a-2', 'b-1', 'c-2' ],
[ 'a-2', 'b-2', 'c-1' ],
[ 'a-2', 'b-2', 'c-2' ],
[ 'a-2', 'b-3', 'c-1' ],
[ 'a-2', 'b-3', 'c-2' ],
]
До сих пор я итерация над Object
, то итерация по Array
для каждого key
, а затем необходимо сделайте это все снова ..
Для начала я сломал ценности, словно так:
[
[ 'a-1', 'a-2' ],
[ 'b-1', 'b-2', 'b-3' ],
[ 'c-1', 'c-2' ]
]
затем итерированного над ними:
var list_joined = []
var list = []
array.forEach((key, index) => {
key.forEach((value) => {
var tmp = [value]
array.forEach((_value, _index) => {
if(_index != index) {
tmp.push(_value[0])
}
})
tmp = tmp.sort()
if(list_joined.indexOf(tmp.join('_')) < 0) {
list_joined.push(tmp.join('_'))
list.push(tmp)
}
})
})
результат
[
[ 'a-1', 'b-1', 'c-1' ],
[ 'a-1', 'b-1', 'c-2' ],
[ 'a-1', 'b-2', 'c-1' ],
[ 'a-1', 'b-3', 'c-1' ],
[ 'a-2', 'b-1', 'c-1' ]
]
Я не могу достаточно положить палец на том, где для исправления итерационного процесса.
Спасибо! вопрос: вы просто пишете эту свободную руку или что-то подобное спрятали? – brod
Это часть канона (меня). –