JavaScript数组的一些操作

本文详细介绍了JavaScript数组的基本操作,包括如何添加、删除、修改数组元素,以及实现数组克隆的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有关数组的增、删、改、克隆的一些操作。

一、数组添加元素(push)

看如下的例子:

let arr1 = ['1','2','3'];
arr1[3] = 'b';
console.log("数组长度:" + arr1.length);
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 数组长度:4
[Log] arr1[0]:1
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] arr1[3]:b 

如上,手动指定索引及对应值可以达到增加数组元素的效果,但通常动态处理过程中,我们需要用到push()。

说明:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

示例如下:

let arr1 = ['1','2','3'];
console.log('数组新长度' + arr1.push('b'));
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 数组新长度4 
[Log] arr1[0]:1 
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] arr1[3]:b

二、数组元素的删除

1. pop()

说明:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。

示例:

let arr1 = ['1','2','3'];
console.log('删除的元素为:' + arr1.pop());
console.log('数组新长度:' + arr1.length);
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 删除的元素为:3
[Log] 数组新长度:2
[Log] arr1[0]:1 
[Log] arr1[1]:2 

2. splice

说明:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

注释:该方法会改变原始数组。

语法:

arrayObject.splice(index,howmany,item1,.....,itemX)

参数描述
index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX可选。向数组添加的新项目。

示例:

let arr1 = ['1','2','3'];
arr1.splice(0,1);
console.log("数组长度:" + arr1.length);
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 数组长度:2 
[Log] arr1[0]:2 
[Log] arr1[1]:3 

清空数组:ary.splice(0,ary.length);

3. delete

说明:这种删除方式,被删除项变为undefined,但数组长度不变,也就是原来数组的索引保持不变,与splice的这点不同特点,可以在特定的应用场景选择使用。

示例:

let arr1 = ['1','2','3'];
delete arr1[0];
console.log("数组长度:" + arr1.length);
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 数组长度:3 
[Log] arr1[0]:undefined 
[Log] arr1[1]:2 
[Log] arr1[2]:3 

可以发现,第一项元素变为了“undefined”,但数组长度没有改变,如果需要获取非“undefined”的其他有效元素可以使用如下示例获得:

for(let index in arr1){
    console.log('arr1[' + index + ']:' + arr1[index]);
}

输出结果为:

[Log] arr1[1]:2
[Log] arr1[2]:3

三、数组元素修改(删除后添加)

数组元素修改可以利用上述的splice方法实现,第三项参数可以输入想要替换的值,效果是,在删除元素所在的索引处添加新元素,当然,也可以添加多个元素。

示例:

let arr1 = ['1','2','3'];
arr1.splice(0,1,'a');
console.log("数组长度:" + arr1.length);
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}

输出结果为:

[Log] 数组长度:3 
[Log] arr1[0]:a
[Log] arr1[1]:2 
[Log] arr1[2]:3 

四、数组的克隆

我们先来看一个例子:

let arr1 = ['1','2','3'];
let arr2 = new Array();
arr2 = arr1;
arr1[0] = 'a';
for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}
console.log('------------');
for(let i = 0; i < arr2.length; i++){
    console.log('arr2[' + i + ']:' + arr2[i]);
}

输出结果为:

[Log] arr1[0]:a 
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] ------------ 
[Log] arr2[0]:a 
[Log] arr2[1]:2 
[Log] arr2[2]:3 

可以发现,通过赋值的方式将arr1数组赋值给arr2数组,在arr1数组中的元素改变时,arr2相应索引处的元素也做了改变,这是因为arr2依然对arr1存在引用,而不是一个全新的数组对象。

1. 循环遍历、赋值。

若要克隆出一个全新的数组对象,首先,循环遍历、赋值,肯定可以实现:

let arr1 = ['1','2','3'];
let arr2 = new Array();
for(let i = 0; i < arr1.length; i++){
    arr2[i] = arr1[i];
}
    arr1[0] = 'a';
    for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}
console.log('------------');
for(let i = 0; i < arr2.length; i++){
    console.log('arr2[' + i + ']:' + arr2[i]);
}

输出结果:

[Log] arr1[0]:a 
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] ------------ 
[Log] arr2[0]:1 
[Log] arr2[1]:2 
[Log] arr2[2]:3 

2. concat()

说明:concat() 方法用于连接两个或多个数组。当连接空数组时,便形成了一个新数组对象。

示例:

let arr1 = ['1','2','3'];
let arr2 = new Array();
arr2 = arr1.concat();
arr1[0] = 'a';

for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}
console.log('------------');
for(let i = 0; i < arr2.length; i++){
    console.log('arr2[' + i + ']:' + arr2[i]);
}

输出结果为:

[Log] arr1[0]:a 
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] ------------
[Log] arr2[0]:1 
[Log] arr2[1]:2
[Log] arr2[2]:3 

3. slice

说明:slice() 方法可从已有的数组中返回选定的元素。

用法:

arrayObject.slice(start,end)

slice(0)表示返回已有数组的所有元素,示例:

let arr1 = ['1','2','3'];
let arr2 = new Array();
arr2 = arr1.slice(0);
arr1[0] = 'a';

for(let i = 0; i < arr1.length; i++){
    console.log('arr1[' + i + ']:' + arr1[i]);
}
console.log('------------');
for(let i = 0; i < arr2.length; i++){
    console.log('arr2[' + i + ']:' + arr2[i]);
}

输出结果为:

[Log] arr1[0]:a 
[Log] arr1[1]:2 
[Log] arr1[2]:3 
[Log] ------------ 
[Log] arr2[0]:1 
[Log] arr2[1]:2 
[Log] arr2[2]:3 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值