数组方法
1.字符串方法
-
通过下标获取
- charAt(下标):获取对应下标的字符
- charCodeAt(下标):获取对应下标的字符编码 “0”–48 “a”–97 “A”–65
-
检索位置,查找是否存在
- indexOf(searchValue,start):查询某个字符在另一个字符串中首次出现的位置,出现返回对应的下标,没有出现返回-1; 作用:判断字符串中是否某个特定字符的存在
- lastIndexOf(searchValue,start):查询某个字符在另一个字符串中最后一次出现的位置,出现返回对应的下标,没有出现返回-1; 从后往前找
-
截取
- substring(start,end):从start开始截取到end,包括开始不包括end,负数为0
- slice(start,end):从start开始截取到end,包括开始不包括end,负数为倒数
- substr(star,length):从start开始,截取几个
-
替换
- replace(searchValue,replaceValue):替换,一次只能换一个
-
大小写转换 不区分大小写比较
-
toUpperCase():转大写
-
toLowerCase():转小写
var s1 = "aArT5"; var s2 = "aart5"; console.log(s1==s2); //false 一位一位比较,比较的是编码 //转换为大写:toUpperCase(); console.log(s1.toUpperCase()); //AART5 //转换为小写:toLowerCase(); console.log(s1.toLowerCase());//aart5 //不区分大小写比较 比较的时候转换为一样的(小写,大写) console.log(s1.toLowerCase()==s2.toLowerCase());//true
-
-
分割
-
split(splitter,length):按分割标记,将字符串分割成数组
var date = "2020-12-23"; var arr = date.split("-"); console.log(arr); // ["2020", "12", "23"] var str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e"; console.log(str.substring(str.indexOf("?")+1)); console.log(str.split("?")[1]);
-
-
去除空格
-
trim():去除首尾空格
-
trimLeft():去除左空格
-
trimRight():去除右空格
//11.trim() : 去除字符串首尾空格 var str=" hello world "; console.log("|"+str+"|"); console.log("|"+str.trim()+"|"); console.log("|"+str.trimLeft()+"|"); console.log("|"+str.trimRight()+"|");
-
-
常用的字符串方法
- charAt()
- indexOf()
- 截取 substring,substr,slice
- replace
- split
-
高频面试题
- http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e,请写
一段js程序提取url中各个get参数(参数名和参数个数不确定),将其key-value
形式返回到一个json结构中,如{a:“1”,b:“2”,c:“”,d:“xxx”,e:undefined}
操作json(对象) var obj = { "name":"web" } console.log(obj.name); //对象.属性名 obj.age = 10;//赋值 对象.属性名(key) = 属性值(value)
实现
var str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e"; var json = {}; //1.获取get参数(?号后面的) str = str.split("?")[1]; console.log(str); //a=1&b=2&c=&d=xxx&e //2.将联系的一段get参数分割成一对一对 var arr = str.split("&"); console.log(arr); //["a=1", "b=2", "c=", "d=xxx", "e"] //3.将数组中的每一组数据,分割开,分别作为json的key和value for (var i = 0; i < arr.length; i++) { var a = arr[i].split("="); //["a",1] json[a[0]] = a[1]; } console.log(json);
- http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e,请写
2.数组对象
2.1 创建数组
//1.字面量创建
var arr1 = [1,2,3,4,5];
//2.关键字new创建
var arr2 = new Array("A","b","C","d","e");
console.log(arr1,arr2);
//3.如果创建的时候参数只有一个并且是number类型,创建长度为n的空数组
var arr3 = new Array(5);
console.log(arr3,arr3[0]); //undefined
//4.length 获取数组的长度
console.log(arr3.length); //5
//5.存储 可以通过下标存储
var arr4 = [];
arr4[0] = 1;
arr4[10] = 10;
console.log(arr4); // [1, empty × 9, 10]
//5.可以通过键值对存储,不计算在长度中
arr4.name = "web";
console.log(arr4);
console.log(arr4.name);
2.2 数组栈方法(头部、末尾添加删除元素)
//数组的方法基本上都在原数组的进行操作
//1.push,pop在数组的末尾添加或删除元素
var arr = [1,2,3];
//push(items):在数组的末尾添加一个或多个元素,返回当前数组的长度
arr.push(4,5);
console.log(arr); // [1, 2, 3, 4,5]
//pop():在数组末尾删除一个元素,返回被删除的元素
var del = arr.pop();
console.log(arr);//[1, 2, 3, 4]
console.log(del); //5
//2.unshift,shift:在数组的头部添加或删除元素
//unshift():在数组的头部添加一个或多个元素,返回当前数组的长度
arr.unshift("A");
console.log(arr); //["A", 1, 2, 3, 4]
//shift():在数组头部删除一个元素,返回被删除的元素
arr.shift();
console.log(arr);//[1, 2, 3, 4]
2.3 数组方法
-
indexOf():找一个元素在数组首次出现的位置,出现返回对应的下标,不出现返回-1
-
splice(start,deleteCount,items):删除数组中的一组元素,使用items进行替换,返回被删除元素组成的数组
参数
- start:开始删除的下标,默认为0
- deleteCount:可选的,默认删除到最后
- items:可选,用于替换的元素
//1.删除 var arr = [1,2,3,4,5]; var delArr = arr.splice(2); //从下标为2的位置开始删除,删除到最后 console.log(arr); //[1,2] console.log(delArr); // [3, 4, 5] 被删除元素组成数组 //从下标为2的位置开始删除2个 var arr = [1,2,3,4,5]; arr.splice(2,2); console.log(arr); // [1, 2, 5] //2.替换 先删除选中的元素,再用items进行替换 var arr = [89,45,67,23]; arr.splice(1,1,54,56,67,78); console.log(arr); //3.添加 var arr = [1,2,5,6]; var n = 4; arr.splice(2,0,n); console.log(arr); // [1, 2, 4, 5, 6]
-
concat():组合数组,将多个数组组合成一个,返回一个组合好的数组
var arr1 = [1,2,3]; var arr2 = ["a","b","c"]; var arr3 = arr1.concat(arr2,"难"); console.log(arr3); //[1, 2, 3, "a", "b", "c", "难"]
-
slice(start,end):截取数组中的一段元素
//2.slice(start,end):截取数组中的一段元素 var sArr = arr3.slice(3,5); console.log(sArr); // ["a", "b"]
-
indexOf():查找数组中某个元素首次出现的位置,出现返回下标,没有返回-1
//4.indexOf():查找数组中某个元素首次出现的位置,出现返回下标,没有返回-1 var arr = [1,2,3,4,5,6]; var index = arr.indexOf(4); console.log(index);//3
-
reverse() 倒序
var arr = [1,2,3,4]; arr.reverse(); console.log(arr); //[4, 3, 2, 1]
2.4 数组排序
2.4.1 选择排序
//1.选择排序 ,拿第一个和后面所有的进行比较,如果前面比较大,交换位置
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
for (var i = 0; i < arr.length; i++) {
//和后面所有的元素进行比较
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) { //如果前面的比较大,交换位置
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
2.4.2 冒泡排序
//2.冒泡排序,相邻的两个比较
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length-1-i; j++) {
//相邻的两个比较
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
2.4.3 快速排序
//3.快排 : 取中间值,声明两个空数组,比较小放前面,大的放后面
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
function quickSort(arr){
//5.递归结束条件
if(arr.length<=1) return arr;
//1.取中间值(从数组中删除)
var middle = arr.splice(parseInt(arr.length/2),1)[0];
//2.声明两个空数组
var left = [],right=[];
//3.比较小放前面,大的放后面
for(var i = 0;i<arr.length;i++){
if(middle>arr[i]){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//4.组合数组
return quickSort(left).concat(middle,quickSort(right));
}
2.4.4 排序方法
//1.默认情况下,按字符串排序
var arr = [6, 3, 9, 21, 7, 4, 8, 5, 11];
arr.sort();
console.log(arr); //[11, 21, 3, 4, 5, 6, 7, 8, 9]
-
按number排序
//2.按number排序 arr.sort(function(a,b){//a,b是两个相邻的数组元素 //return a-b; //a-b>0换位置 从小到大 return b-a; //从大到小 }); console.log(arr); //[3, 4, 5, 6, 7, 8, 9, 11, 21]
-
对象排序
//3.按年龄排序 (升序)(number) var student = [ {"name":"羊振疼","age":80,"date":"1940-12-12","c":89}, {"name":"张振","age":81,"date":"1939-12-12","c":100}, {"name":"马杰伦","age":18,"date":"2002-1-1","c":30}, {"name":"安德华","age":18,"date":"2002-11-3","c":70}, ]; student.sort(function(a,b){ //a={"name":"羊振疼","age":80,"date":"1940-12-12","c":89} //b={"name":"张振","age":81,"date":"1939-12-12","c":100} return a.age-b.age; });
-
按时间排序
//3.如果年龄一样,按出生日期的降序排序 student.sort(function(a,b){ if(a.age == b.age){ return new Date(b.date)-new Date(a.date); }else{ return a.age - b.age; } }) console.log(student); console.log(Date.parse("2002-1-1")); //将字符串格式的时间,转换为时间戳 console.log(new Date("2002-1-1")-new Date("2002-11-3"));
-
按中文排序
//4.按名字升序排序 student.sort(function(a,b){ //localeCompare:按当前本地的格式进行比较 return a.name.localeCompare(b.name) }); console.log(student);
-
随机排序
//5.随机排序 var arr = [1,2,3,4,5,6,7]; arr.sort(function(){ return Math.random()-0.5; }); console.log(arr);
push,pop,splice,sort()(算法+方法)