JS数组合并(5种)

博客主要围绕JavaScript数组合并展开,介绍了多种实现方式,如使用for循环、arr.concat(arr2)、arr.push.apply(arr, arr2)、[…arr, …arr2]、push(…arr)等,还提到部分方法会变更原数组,部分会生成新数组。
该文章已生成可运行项目,

前言

项目过程中,经常会遇到 JS 数组合并的情况,时常为这个纠结。这里整理一下。

简单而实用的for

最容易想到的莫过于 for 了。

会变更原数组,当然也可以写成生成新数组的形式。

经读者提点,数组不建议使用for…in,具体可参考MDN for…in

let arr = [1, 2]
let arr2 = [3, 4]

for (let i = 0; i < len(arr2); i++) {
	arr.push(arr2[i])
}

console.log(arr)
// [1, 2, 3, 4]

arr.concat(arr2)

会生成新的数组。

let arr = [1, 2]
let arr2 = [3, 4]

arr = arr.concat(arr2)

console.log(arr)
// [1, 2, 3, 4]

arr.push.apply(arr, arr2)

第一种 for 循环就是使用的 push 来实现的。

因为 push 是可以接收多个参数的,所以我们可以使用 apply 来实现。

会变更原数组。

let arr = [1, 2]
let arr2 = [3, 4]

arr.push.apply(arr, arr2)

console.log(arr)
// [1, 2, 3, 4]

[…arr, …arr2]

ES6 的语法,简单而实用。

会生成新的数组。

let arr = [1, 2]
let arr2 = [3, 4]

arr = [...arr, ...arr2]

console.log(arr)
// [1, 2, 3, 4]

push(…arr)

push 结合 ...[] 来实现。

会变更原数组。

let arr = [1, 2]
let arr2 = [3, 4]

arr.push(...arr2)

console.log(arr)
// [1, 2, 3, 4]

最后

实现方式大同小异,可以理解那最容易理解的一部分。

本文章已经生成可运行项目
<think>首先,用户的问题是“js 数组合并”,意思是用JavaScript实现数组合并。我需要用中文回答,因为用户指定了“请使用中文回答问题”。 我的回答应该包括: 1. 解释或提供JavaScript代码来合并数组。 2. 在回答末尾,提出3-5个相关问题。 3. 第一行必须是“§§相关问题§§”,然后列出相关问题,禁止换行分散。意思是整个相关问题部分要连续输出,不能有额外的换行。 从示例看: - 示例中先回答问题(这里是快速排序的基本思想和代码),然后直接输出“§§相关问题§§”,接着是1. 2. 3. 等相关问题。 所以,我的结构: - 先回答问题:解释JavaScript数组合并的不同方法,并提供代码例子。 - 然后,在新的一行输出“§§相关问题§§”,接着列出3-5个相关问题。 内容: - JavaScript合并数组的常用方法: - 使用`concat()`方法:`let newArray = array1.concat(array2);` - 使用展开运算符(spread operator):`let newArray = [...array1, ...array2];` - 使用push.apply:`Array.prototype.push.apply(array1, array2);`(这会修改原数组) - 或者循环遍历添加。 - 我应该提供简洁的代码示例。 - 既然用户说“数组合并”,可能指的是合并多个数组。 代码示例: - 假设我有两个数组:`let arr1 = [1, 2]; let arr2 = [3, 4];` - 合并后:`[1, 2, 3, 4]` 回答格式: - 用中文解释。 - 提供代码块,像示例中那样。 然后,相关问题: - 我需要基于用户的问题和我的回答提出3-5个相关问题。 - 用户的问题是“js 数组合并”,所以我应该提出与之相关的问题。 - 例如: 1. 如何合并多个数组? 2. 合并数组时如何处理重复元素? 3. 有没有原地合并数组的方法? 4. JavaScript数组合并的性能如何? 5. 其他合并可能性,比如合并对象数组等。 确保相关问题: - 必须输出在回答末尾。 - 第一行是“§§相关问题§§”完整输出。 - 然后直接列出问题,用数字点号,如“1. ... 2. ... 3. ...”,示例中用了“1. ···”,所以我应该用类似格式。 - 禁止换行分散:意思是列表要连续,不要有额外换行。示例中是“1. ···\n2. ···\n3. ···”在同一行或连续,但我看示例是换行的,但规则说“禁止换行分散”,可能意味着不要在列表中插入空行,保持每个问题一行即可。示例中是: ``` 1. ··· 2. ··· 3. ··· ``` 所以我认为每个问题占一行是正常的。 现在,构建回答: 1. 开头回答问题: - 简单解释JavaScript数组合并的方法。 - 提供代码示例。 2. 末尾输出相关问题。 完整响应: - 中文回答。 - 代码用标记,如```javascript ... ```。 相关问题列表: - 提出3-5个。 - 基于主题:JavaScript数组操作。 列出相关问题想法: 1. JavaScript中如何移除数组中的重复元素? 2. 如何将数组与其他数据类型(如对象)合并? 3. 数组合并数组连接有什么区别? 4. 在JavaScript中,有没有内置方法可以同时合并和过滤数组5. 如何高效地合并大型数组? 确保有3-5个。 最终输出: - 回答部分。 - 然后换行输出“§§相关问题§§” - 然后输出问题列表。 </think>在JavaScript中,数组合并通常使用`concat()`方法或展开运算符(spread operator)来实现。这些方法会创建新数组,不会修改原数组。下面简要介绍两种常用方式并提供代码示例: 1. **使用`concat()`方法**: 这是一个内置函数,可以将多个数组合并成一个新数组。 ```javascript let arr1 = [1, 2]; let arr2 = [3, 4]; let mergedArray = arr1.concat(arr2); // 输出: [1, 2, 3, 4] ``` 2. **使用展开运算符(`...`)**: 这是一种更简洁的现代语法,适用于ES6及以上版本。 ```javascript let arr1 = [1, 2]; let arr2 = [3, 4]; let mergedArray = [...arr1, ...arr2]; // 输出: [1, 2, 3, 4] ``` 这两种方法都支持合并多个数组,例如:`let merged = [...arr1, ...arr2, ...arr3];`。如果需要在原数组上修改(即原地合并),可以使用`push.apply()`方法,但需注意它可能影响性能。
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值