JavaScript函数return返回值无法获取,仅console.log生效求解决
问题分析与修正
1. 为什么return没看到输出?
你的函数确实通过return jawaban返回了结果,但调用merge([1, 2, 3], 1, [5, 9, 2], 2);后,没有对返回值做任何处理——JavaScript不会自动打印函数的返回值,除非你主动输出它。可以这样修改调用方式:
// 方式1:把返回值存到变量后打印 const result = merge([1, 2, 3], 1, [5, 9, 2], 2); console.log(result); // 方式2:直接打印函数调用结果 console.log(merge([1, 2, 3], 1, [5, 9, 2], 2));
2. 代码里的逻辑错误
原代码还有两个影响结果的问题:
- 循环越界:
i <= m和j <= n会取到数组的无效元素。比如你传的m=1,nums1的有效元素索引是0,nums1[1]会返回undefined;同理nums2的有效索引应该是0到n-1,循环条件要改成i < m和j < n。 - 排序逻辑问题:
Array.sort()默认按字符串Unicode码排序,对数字排序会出错(比如10会排在2前面),需要传入比较函数实现数字升序排序。
修正后的完整代码:
var merge = function(nums1, m, nums2, n) { let hasil = []; // 只取nums1的前m个有效元素 for (let i = 0; i < m; i++) { hasil.push(nums1[i]); } // 只取nums2的前n个有效元素 for (let j = 0; j < n; j++) { hasil.push(nums2[j]); } // 数字升序排序 let jawaban = hasil.sort((a, b) => a - b); return jawaban }; // 调用并打印返回值 console.log(merge([1, 2, 3], 1, [5, 9, 2], 2)); // 输出:[1,2,5,9]
内容的提问来源于stack exchange,提问作者adityamms
相关产品推荐
相关产品推荐

