// 1 多个数组合并为一个数组 var arr1 = [1, 2, 3]; var arr2 = [4, 5, 6]; var arr3 = [7, 8, 9]; let newArr = []; // 代码补充区域 newArr = arr1.push.apply(arr1, arr2); console.log(newArr); //渴望结果:[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] console.log(typeof (newArr)); console.log(arr1); //渴望结果:[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] console.log(typeof (arr1));为什么我的newArr是一个数字
时间: 2023-07-15 13:11:11 浏览: 90
你的代码存在两个问题:
1. push() 方法返回的是数组的新长度,而不是数组本身。因此,你需要先将 arr1 数组作为上下文对象(即调用 push() 方法的对象)传入,然后再传入 arr2 数组作为参数,这样 arr2 数组就会被添加到 arr1 数组中,并返回新的长度。所以,应该将 `newArr = arr1.push.apply(arr1, arr2);` 修改为 `Array.prototype.push.apply(arr1, arr2);`,这样就可以将 arr2 数组中的元素添加到 arr1 数组中了。
2. newArr 数组是你自己声明的一个空数组,但是你并没有给它赋值,而是直接使用了 push() 方法将 arr2 数组添加到 arr1 数组中。因此,newArr 数组并没有被修改。如果你想要 newArr 数组也包含 arr1 和 arr2 数组中的所有元素,可以使用 concat() 方法将它们合并起来,如下所示:
```
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr3 = [7, 8, 9];
let newArr = arr1.concat(arr2, arr3);
console.log(newArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(typeof newArr); // object
console.log(arr1); // [1, 2, 3]
console.log(typeof arr1); // object
```
这样就可以将多个数组合并为一个数组,并且保留原始数组的值了。
阅读全文