@Evelate

Как подправить цикл?

Нужно сохранить все возможные комбинации с переменными, например:
Есть a, b , c
Должно получиться так

комбо 1: a arr[0] = [a]
комбо 2: b arr[1] = [b]
комбо 3: c arr[2] = [c]
комбо 4: a b arr[3] = [a, b]
комбо 5: a c arr[4] = [a, c]
комбо 6: b c arr[5] = [b, c]
комбо 7: a b c arr[6] = [a, b, c]

function nearest(arr) {

var len = arr.length
    , i
    , bit
    , n = Math.pow(2, len)
    , result = []
  ;

for( i = 1; i < n; i++) {
        
        for( bit = 0; bit < len; bit++) {
            if( i & (1 << bit)) {
                result.push(arr[bit]);
            }
        }
}


Туго что-то мне даётся понимание работы данного кода)
Сейчас данный цикл просто записывает подряд все возможные комбинации. Что-то не соображу как сделать, чтобы они разбивались на уникальные под массивы?)

arr[0] [a]
arr[1] [b]
arr[2] [c]
arr[3] [a, b]
arr[4] [a, c]
arr[5] [b, c]
arr[6] [a, b, c]
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Во внешнем цикле создаете подмассив, во внутреннем заполняете его, потом добавляете в result.
https://jsfiddle.net/mh0tq8hd/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы