js六种给数组追加元素的方法,你想得到几种?

本文介绍了JavaScript中向数组追加元素的各种方法,包括push、unshift、splice、concat及扩展运算符等,并详细解释了每种方法的特点及使用场景。

现在有一个数组arr=[1,2,3,4]
要追加了!

1.push方法

let arr=[1,2,3,4];
arr.push(5);
console.log(arr);
//得到[1,2,3,4,5]

push方法会修改原数组,可以带多个参数,都会一起加到数组末尾

2.unshift方法

let arr=[1,2,3,4];
arr.unshift(5);
console.log(arr);
//得到[5,1,2,3,4]

类似push,不过会加到开头

3.length属性

可以直接给length位置赋值

let arr=[1,2,3,4];
arr[arr.length]=5;
console.log(arr);
//得到[1,2,3,4,5]

数组长度会自动+1

4.splice方法

splice既可以删除数组元素,也可以追加数组元组

arrayObject.splice(index,howmany,item1,…,itemX)
其中,index和howmany是必须,后面的item不是必须的
howmany指的是删除元素的个数,是0则为不删除
index是开始修改的索引位置
item是在index处增加元素的列表

//删除
let arr=[1,2,3,4];
arr.splice(1,1);
console.log(arr);
//得到[1,3,4]
//增加
let arr=[1,2,3,4];
arr.splice(1,0,1.5);
console.log(arr);
//得到[1,1.5,2,3,4]

另外,如果howmany非0的情况下,item不为空,那么会先删掉howmany对应的数组元素,再在index位置追加item

let arr=[1,2,3,4];
arr.splice(1,1,9,9,9);
console.log(arr);
//得到[1,9,9,9,3,4]

5.concat方法

concat方法和push类似,不过会生成新数组,不会修改原数组

let arr = [1,2,3];
console.log(arr.concat(4,5));
//得到[1,2,3,4,5]

也用于数组连接

let arr1 = [1,2,3];
let arr2 = [4,5,6];
console.log(arr1.concat(arr2));
//得到[1,2,3,4,5,6]

6. …

…也就是拓展运算符

let arr1=[1,2,3];
let arr2=[...arr1,4,5];
console.log(arr2);
//得到[1,2,3,4,5]

…不只是用于复制数组,它可以复制一个对象中所有可遍历的属性到一个新对象
比如

let obj1={a:1 , b:2 , d:9};
let obj2={c:2 , d:5 , ...obj1};
console.log(obj2);
//得到{c:2,a:1,b:2,d:9}
//如果有重复的,会被覆盖掉,比如这里的d

这个复制是一种浅拷贝,所以只复制了对象的地址
比如,Symbol也会原封不动的复制过来

const obj1 = {"key":Symbol()};
const obj2 = { ...obj1 };
console.log(obj1==obj2);//false
console.log(obj1["key"]==obj2["key"]);//true

同理:

let obj1={a:{b:"c"}}
let obj2={...obj1};
obj2.a.b="d";
console.log(obj1);
console.log(obj2);
//得到的都是{a:{b:"d"}}
//也就证明了复制的是地址

除此之外,还可以把他和解构赋值结合,比如

let [first,...rest]=[1,2,3,4,5];
console.log(first);//1
console.log(rest);//[2,3,4,5]

这种方法下,…必须在最后,在开头[…rest,first]和在中间[first,…rest,last]都会报错

也可以用这个来拆分字符串

let hello=[..."helloword"];
console.log(hello);
//['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
<think> 我们参考了用户提供的引用,并注意到用户想要查找将两个一维数组进行拼接的方法。根据引用[3]和引用[4],我们可以总结出几种方法。 用户的问题:两个一维数组的拼接方法 在编程中,一维数组的拼接通常是指将两个数组合并成一个新数组。拼接方式有多种,例如: 1. 直接连接:将第二个数组元素依次添加到第一个数组的末尾。 2. 交叉合并:将两个数组元素交叉排列(如[a1,b1,a2,b2,...])。 我们参考引用信息: 引用[3]提到了一维数组交叉合并的方法(使用MATLAB): G(1:2:end) = A; % 将A放在奇数位置 G(2:2:end) = B; % 将B放在偶数位置 引用[4]展示了使用numpy的concatenate函数进行拼接(Python): np.concatenate((iris_feature, iris_f), axis=0) # 沿着纵轴(第0轴)拼接 因此,我们可以根据编程语言的不同提供不同的方法。 由于用户没有指定编程语言,我们以几种常见语言为例: 1. Python (使用numpy) - 直接连接:使用numpy.concatenate import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.concatenate((a, b)) # 得到 [1,2,3,4,5,6] - 交叉合并:可以借助numpy的column_stack和flatten d = np.column_stack((a, b)).flatten() # 得到 [1,4,2,5,3,6] 或者使用更直接的方法: d = np.empty((a.size + b.size,), dtype=a.dtype) d[0::2] = a # 从0开始,每隔一个位置赋值 d[1::2] = b # 从1开始,每隔一个位置赋值 2. MATLAB - 直接连接:使用方括号 a = [1,2,3]; b = [4,5,6]; c = [a, b]; % 或者 [a b] 得到 [1,2,3,4,5,6] % 或者使用 horzcat(a,b) - 交叉合并:如引用[3]所示 G = zeros(1, length(a)+length(b)); G(1:2:end) = a; G(2:2:end) = b; 3. JavaScript - 直接连接:使用concat方法 let a = [1,2,3]; let b = [4,5,6]; let c = a.concat(b); // [1,2,3,4,5,6] - 交叉合并:可以使用循环或reduce let d = []; for (let i=0; i<a.length; i++) { d.push(a[i]); d.push(b[i]); } // 或者使用reduce let d = a.reduce((acc, cur, i) => acc.concat(cur, b[i]), []); 4. Java - 直接连接:使用System.arraycopy或Arrays.copyOf int[] a = {1,2,3}; int[] b = {4,5,6}; int[] c = new int[a.length+b.length]; System.arraycopy(a, 0, c, 0, a.length); System.arraycopy(b, 0, c, a.length, b.length); - 交叉合并:循环 int[] d = new int[a.length+b.length]; for (int i=0, j=0; i<a.length; i++, j+=2) { d[j] = a[i]; d[j+1] = b[i]; } 注意:交叉合并的前提是两个数组长度相同,如果不同则需要考虑如何处理多余的元素。 根据用户要求,我们提供两种拼接方式(直接连接和交叉合并)的示例,并说明不同编程语言中的实现。 由于用户之前的问题中提到了Python和Labview等,但本次问题没有指定语言,所以我们尽量提供多种语言的参考。 最后,我们生成相关问题。 </think> ### 两个一维数组的拼接方法 在编程中拼接两个一维数组主要有两种常用方式:**直接连接**和**交叉合并**。以下是具体实现方法: #### 1. 直接连接(顺序拼接) 将第二个数组元素追加到第一个数组末尾: ```python import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) # 方法1:concatenate result = np.concatenate((arr1, arr2)) # [1,2,3,4,5,6] # 方法2:hstack result = np.hstack((arr1, arr2)) # [1,2,3,4,5,6] ``` #### 2. 交叉合并(交替拼接) 两个数组元素交替排列: ```python # 创建新数组并交替填充 result = np.empty(arr1.size + arr2.size, dtype=arr1.dtype) result[0::2] = arr1 # 奇数索引位置放arr1 result[1::2] = arr2 # 偶数索引位置放arr2 # 结果:[1,4,2,5,3,6] ``` #### 其他语言实现 **MATLAB**: ```matlab % 直接连接 c = [a, b]; % 交叉合并 G = zeros(1, length(a)+length(b)); G(1:2:end) = a; G(2:2:end) = b; ``` **JavaScript**: ```javascript // 直接连接 const c = [...a, ...b]; // 交叉合并 const d = a.flatMap((val, i) => [val, b[i]]); ``` > **关键点说明**: > 1. 直接连接适用于需要保留原数组顺序的场景 > 2. 交叉合并要求两个数组长度相同 > 3. 使用`numpy`时注意数组维度转换(一维数组不需要`newaxis`)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值