Функция возвращает только первое значение

1

Я понял, что когда я помещаю цикл внутри функции и хочу return значение, это даст мне только первое значение. Как в этом примере:

var arr = [[1,2], [3,4], [5,6]];

function getVal(item) {
    var result;
    for (var i = 0; i < item.length; i++) {
        for (var j = 0; j < item[i].length; j++) {
            return (item[i][j])
        }
    }
}

console.log(getVal(arr));

Это даст мне только значение 1. Но когда я ставлю console.log вместо return в функцию, он даст мне ожидаемый результат (1,2,3,4,5,6). Что здесь не так?

  • 0
    Функция выполняется точно так, как ожидалось. Что ты хочешь случиться? Эта функция всегда будет возвращать значение в arr [0] [0], которое равно 1. Если вы замените возвращение на console.log, то оно будет перебирать все возможные значения.
  • 0
    Я просто не уверен, что размещение console.log внутри цикла - это хорошая практика? Что если я хочу получить весь результат, а не только первый элемент?
Показать ещё 3 комментария
Теги:
for-loop
function

4 ответа

2
Лучший ответ

Вы можете собрать значения и вернуться в конце функции вместо раннего выхода с одним значением.

function getVal(item) {
    var result = [];
    for (var i = 0; i < item.length; i++) {
        for (var j = 0; j < item[i].length; j++) {
            result.push(item[i][j]);
        }
    }
    return result;
}

var arr = [[1, 2], [3, 4], [5, 6]];

console.log(getVal(arr));
1

Ключевое слово return приведет к завершению функции с заданным возвращаемым значением. console.log() просто дает результат значения.

1

это должно получиться:

var arr = [[1,2], [3,4], [5,6]];

function getVal(item) {
    var result = [];
    for (var i = 0; i < item.length; i++) {
        for (var j = 0; j < item[i].length; j++) {
            result.push(item[i][j]);
        }
    }
    return result;
}

console.log(getVal(arr));
  • 0
    Это то, что я хотел. Я пропустил часть создания массива. Благодарю вас.
  • 0
    @icelandico выглядит так, будто вы упускаете важные концептуальные вещи. Я бы посоветовал вам глубже вникнуть в основные понятия, такие как печать, и вернуться, чтобы стать лучшим разработчиком. Удачи.
0

Если вы хотите вернуть плоское отображение ввода, вам, вероятно, будет лучше избегать циклов for:

const arr = [[1,2], [3,4], [5,6]];
const getVal = (inputArr) => [].concat(...inputArr);
console.log(getVal(arr));
  • 0
    этот ответ правильный, но предполагает многое с точки зрения доступной версии javascript и, вероятно, более сложен, чем OP может иметь дело только сейчас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню