js删除数组所有元素(第一个、最后一个、按条件或值删除指定元素)
在 Web 开发过程中,需求千变万化,就拿 js 数组来说,有时可能要删除所有元素,有时只要求删除第一个元素,有时又要求删除最后一个元素,有时只要求删除指定元素。在这四种删除中,js删除数组所有元素最为简单,一句代码搞定;删除最后一个元素用 pop() 方法也简单;删除第一个元素,稍微麻烦一些。
js 提供的函数(方法)也挺多,删除第一个和最后一个元素都有方法可用;当然,也可以不用 js 提供的方法,自己写代码删除,不过,删除第一个元素后,后面的所有元素都要向移前,代码麻烦一些。另外,按条件或值删除指定元素,需要自己写代码。
一、js删除数组所有元素
var arr = new Array();
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr.length = 0;//把数组长度设置为0,即清除数组所有元素
或者:
arr.splice(0, arr.length);
二、js删除数组第一元素
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
方法一:
delete arr[0];
该方法,删除第一个元素后,数组索引不变,即数组长度不变,第一个元素变为 undefined,所以在遍历中,用此方法删除数组元素不会因数组长度发生变化而产生错误。
方法二:
//js删除数组第一元素
function DelArrayElement(arr, n) {
if (arr == null || isNaN(n) || n >= arr.length) {
return false;
}
arr.splice(n, 1);
}
调用方法:
DelArrayElement(arr, 0)
alert(arr[0] + ";删除第一个元素后数组长度:" + arr.length);
输出结果:2;删除第一个元素后数组长度:8
该方法删除数组第一个元素后,后面的元素自动往前移,所以第一个元素变为2,数组长度了减了1变为8,数组索引也发生变化。
三、js删除数组最后一个元素
var arr = ["a", "b", "c", "d", "e", "f"];
arr.pop();
alert(arr + ";数组长度:" + arr.length);
输出结果:
a,b,c,d,e;数组长度:5
删除数组最后一个元素后,数组长度也减1,由原来的6变为5。
四、js数组删除指定元素
1、删除满足指定条件的元素
假如要删除数组中的所有偶数,代码如下:
方法一:把非偶数保存到另一个数组
<script type="text/javascript">
function RemoveSpecifiedElement() {
var arr = [11, 2, 19, 23, 16, 6, 31, 7, 47], newArr = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
newArr[j] = arr[i];
j++;
}
}
return newArr;
}
//调用
var arr = RemoveSpecifiedElement1();
for (var i = 0; i < arr.length; i++) {
document.write(arr[i], ",");
}
</script>
输出结果:11,19,23,31,7,47
方法二(效率不高):删除一个元素,i 减 1
<script type="text/javascript">
function RemoveSpecifiedElement() {
var arr = [11, 2, 19, 23, 16, 6, 31, 7, 47];
for (var i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
arr.splice(i, 1);
i--;
}
}
return arr;
}
</script>
2、删除指定的连续几个元素
假如要删除数组中第 2 至第 4 三个元素,代码可以这样写:
var arr = [11, 12, 13, 14, 15, 16];
arr.splice(2, 3);
删除后,数组的元素为:11,12,16。
五、js 按值删除数元素
1、数组无重复值
代码如下:
<script type="text/javascript">
function RemoveElementByValue(val) {
var arr = [10, 32, 8, 45, 38, 17, 31];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == val) {
arr.splice(i, 1);
break;
}
}
return arr;
}
//调用(删除 45)
var arr = RemoveElementByValue(45);
for (var i = 0; i < arr.length; i++) {
document.write(arr[i], ",");
}
</script>
删除后,数组元素为:10,32,8,38,17,31
2、数组有重复值(要删除的值有重复值)
代码如下:
<script type="text/javascript">
function RemoveElementByValues(val) {
var arr = [10, 32, 8, 45, 38, 17, 32, 95], newArr = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] != val) {
newArr[j] = arr[i];
j++;
}
}
return newArr;
}
//调用(删除重复值 32)
var arr = RemoveElementByValues(32);
for (var i = 0; i < arr.length; i++) {
document.write(arr[i], ",");
}
</script>
删除后,数组元素为:10,8,45,38,17,95