一、删除特定元素
1、使用splice()删除所有特定元素
splice()添加或删除数组中的元素。
语法:array.splice(index,howmany,item1,…,itemX)
index | 从何处添加/删除元素,是元素下标,必须是数字(必填) |
---|---|
howmany | 应删除多少元素。必须是数字,但可以是 “0”。不写:从index到结尾所有(可选) |
item1, …, itemX | 要添加到数组的新元素(可选) |
//使用splice()删除 所有 特定 "-"
var arr = [3, 5, "-", "9", "-"];
//先判断数组中是否包含"-"
if(arr.indexOf("-") != -1){
for(var i =0;i<arr.length;i++){
if(arr[i] == "-"){
arr.splice(i,1);
}
}
console.log("删除后的数组", arr);
//删除后的数组 (3) [3, 5, "9"]
}else{
console.log("无-");
}
2、pop()与shift()删除
pop() | shift() |
---|---|
删除数组的最后一个元素 | 删除数组第一个元素 |
array.pop() | array.shift() |
var arr = [3, 5, "-", "9", "-"];
arr.pop();
console.log("删除后的数组", arr);
//删除后的数组 (4) [3, 5, "-", "9"]
var arr = [3, 5, "-", "9", "-"];
arr.shift();
console.log("删除后的数组", arr);
//删除后的数组 (4) [5, "-", "9", "-"]
3、slice()与concat()结合使用
- slice()与concat()结合使用,删除特定元素
不建议使用这种繁琐方法进行删除。只是想熟悉slice()与concat()的语法用法而已。
slice()不修改原数组,只是浅拷贝了新数组。当该元素是个对象引用,操作后都会发生改变时,出现深浅拷贝问题,可参考 js深浅拷贝解决方法
slice() | concat() |
---|---|
截取字符串或数组某部分 | 连接多个字符串或数组 |
array.slice(start, end) | string.concat(string1,…, stringX) |
start可选,负数就从尾部算起。end可选 | ()里的内容必需 |
var arr = [3, 5, "-", "9", "-"];
var OneArr = arr.slice(0,2); //(2) [3, 5]
var TwoArr = arr.slice(3,4); //["9"]
var newStr = OneArr.concat(TwoArr);
console.log("newStr",newStr) //(3) [3, 5, "9"]
二、替换特定元素
1、使用replaceAll()替换所有特定元素
replaceAll是用于在字符串中,替换字符的。当然我们进行“数组”,“字符串”的转换,也能应用在数组中。一般配合正则表达式使用。
replace()自行查看 replace()js菜鸟教程
语法: const newStr = str.replaceAll(regexp|substr, newSubstr|function)
var arr = [3, 5, "-", "9", "-"];
var newArr = [];
var str = arr.toString().replaceAll("-","新");
console.log(str); //3,5,新,9,新
newArr = str.split(","); //字符串转数组
console.log("newArr",newArr);
//newArr (5) ["3", "5", "新", "9", "新"]
三、总结
操作数组与字符串的增删改查都很yeah,项目中一定总会遇到,但是平时我写的会很繁琐,希望以后我能找最优解去解决项目问题吧。
- 数组与字符串的相互转换:指路—>数组、字符串的相互转换!那可是真必备
- 删除替换数组特定值:指路—>删除、替换 数组 特定值!
- 数组对象去重:指路—>数组对象去重!必备
- 数组去重的5种方法:指路—>数组去重的5种方法 也赶来了!
- javascript菜鸟教程:指路—>JavaScript 教程