前言:js数组删除一般采用数组的 splice 方法和 delete 方法,但是采用 delete 方法后直接数组.kength 来获取数组长度是获取不了真实长度的,下面详细讲解一下。
一、splice 方法
splice ( index , len , [ item ] ) 该方法会改变原始数组。
index:数组开始下标。len:替换/删除的长度。item:替换的值,删除操作的话 item为空
举例:
var arr = ["11", "22", "33", "44", "55"];
//清空整个数组
arr.splice(0, arr.length);
console.log(arr);
//[]
//删除一个元素
var arr = ["11", "22", "33", "44", "55"];
arr.splice(1, 1);
console.log(arr);
// ["11", "33", "44", "55"]
//删除一个,增加两个
arr.splice(1, 1, "88", "99");
console.log(arr);
//["11", "88", "99", "44", "55"]
二、delete 删除数组元素
只是被删除的元素变成了 undefined,其他的元素的键值还是不变。
var arr = ["11", "22", "33", "44", "55"];
console.log(arr);
//["11", "22", "33", "44", "55"]
delete arr[2];
console.log(arr);
//["11", "22", empty, "44", "55"]
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
// 11
// 22
// undefined
// 44
// 55
打印出来的结果:可以看出 delete 方式不会改变数组的长度,而且删除的元素只会变成 undefined。
这时想获取数组真实长度,可以采取下面这种方式:
arr = ["11", "22", "33", "44", "55"]
console.log(arr)
//["11", "22", "33", "44", "55"]
console.log(arr.length)
// 5
delete arr[2] //true
console.log(arr)
// ["11", "22", empty, "44", "55"]
var length = 0;
for(var a in arr){
length ++;
}
console.log("数组真实长度: " + length);
//数组真实长度: 4
3.js 对中文字符 解码和编码
//编码
decodeURI(编码前字符);
//解码
decodeURIComponent(编码后字符);
var url ="http://www.aerchi.com/My Folder/打杂人/"
console.log(encodeURI(url))
// http://www.aerchi.com/My%20Folder/%E6%89%93%E6%9D%82%E4%BA%BA/
console.log(decodeURI(url))
// http://www.aerchi.com/My Folder/打杂人/
打杂人
2019-0