Возвращаемые значения из цикла for в javascript

У меня есть следующая функция:

  function getId(a){
    var aL = a.length;
    for(i = 0; i < aL; i++ ){
      return a[i][2].split(":", 1)[0];
    }    
  }                          

и при использовании console.log() внутри функции вместо return я получаю все значения в цикле, и то же самое относится к document.write. Как я могу получить доступ к этим значениям в виде строки для использования в другом разделе моего кода?

Спасибо заранее.

Ответ 1

Вы можете сделать это с yield в новых версиях js, но это не может быть и речи. Вот что вы можете сделать:

function getId(a){
  var aL = a.length;
  var values = [];
  for(i = 0; i < aL; i++ ){
    values.push(a[i][2].split(":", 1)[0]);
  }    
  return values.join('');
}  

Ответ 2

Вам нужно кэшировать строку и вернуться позже:

function getId(a){
    var aL = a.length;
    var output = '';
    for(var i = 0; i < aL; i++ ){
       output += a[i][2].split(":", 1)[0];
    }    
    return output;
} 

Ответ 3

  • Оператор return разбивает цикл после его выполнения. Следовательно рассмотрите размещение return оператора вне цикла .
  • Поскольку вы хотите вернуть строку, вы создадите переменную и присвойте ему пустую строку. (Здесь будет добавляться/добавлять результаты из цикла.)
  • возвращает строковую переменную.

Таким образом, окончательный код будет выглядеть как...

function getId(a){
    var result = '';
    var aL = a.length;
    for(i = 0; i < aL; i++ ){
      result += a[i][2].split(":", 1)[0];
    } 
    return result;
  }