函数内嵌循环使用return仅返回首个值的原因咨询
为什么嵌套循环里用return只返回第一个值?
这问题我当初刚学JavaScript的时候也踩过一模一样的坑!咱们来拆解一下原因:
核心区别:return vs console.log
return的作用:一旦函数执行到return语句,会立刻终止整个函数的执行,并把后面的值作为函数的返回结果抛出去。你嵌套循环里第一次执行到return item[i][j]时,也就是i=0,j=0的时候,函数直接停了,后面的循环迭代根本没机会跑,所以只会返回1。console.log的作用:它只是把内容输出到控制台,不会中断函数或循环的执行,所以嵌套循环能从头到尾把所有元素都遍历一遍,依次输出1,2,3,4,5,6。
如果你想返回所有值,该怎么改?
如果需要把二维数组里的所有元素都返回,可以先把结果收集到一个数组里,最后再一次性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++) { result.push(item[i][j]); // 把每个元素加入数组 } } return result; // 循环结束后返回整个数组 } console.log(getVal(arr)); // 输出 [1,2,3,4,5,6]
或者更简洁的ES6写法,用数组的flat()方法直接扁平化数组:
var arr = [[1,2], [3,4], [5,6]]; function getVal(item) { return item.flat(); } console.log(getVal(arr)); // 同样输出 [1,2,3,4,5,6]
内容的提问来源于stack exchange,提问作者muszynov
相关产品推荐
相关产品推荐

