2015-11-12 4 views
1

ниже является решением проблемы проблемы с соединением leetcodehttps://leetcode.com/problems/combinations/. В принципе, n выберите k, верните все возможности. Я бегу в эту проблему внутри моей второй цикл, где вы видитеjavascript array.push (array.push (x)) странный результат

tmpResult[i].push(n); 
result.push(tmpResult[i]); 

Если я сделать

result.push(tmpResult[i].push(n)); 

результат очень разные, и я получаю сообщение об ошибке: Line 22: TypeError: tmpResult [i] .push не является функцией. Я родом из мира java и что javascript делает по-другому в этом одном строчном коде, который отличается от двух строк над ним?

var combine = function(n, k) { 
    if (k === 0 || k > n) 
     return []; 

    var result = []; 

    if (k === 1) { 
     for (var i = 1; i <= n; i++) { 
      result.push([i]); 
     } 
     return result; 
    } 
    // choose n 
    var tmpResult = combine(n-1,k-1); 

    for(var i = 0; i < tmpResult.length; i++) { 
     tmpResult[i].push(n); 
     result.push(tmpResult[i]); 
     // below doesnt work 
     // result.push(tmpResult[i].push(n)); 
    } 

    // not choose n 
    result = result.concat(combine(n-1, k)); 

    return result; 
}; 

ответ

0

Array.prototype.push()

The push() method adds one or more elements to the end of an array and returns the new length of the array.

Вы хотите добавить длину массива в result, поэтому result.push(tmpResult[i].push(n)); не работает.

+0

спасибо, я должен был посмотрел на апи более тщательно! –

0

Метод толчок возвращает новый размер массива, а не сам массив

+0

спасибо, я должен был внимательно посмотреть на api! –

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