1.选择排序
var arr = [43,543,23,1,6];
function box(arr){
var temp = 0;
for (var i = 0; i < arr.length-1; i++) {
for(var j=i+1; j<arr.length; j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
alert(box(arr));
2.sort排序
a.按照ASCII码值排序
var arr = ["a",4,"*",3,"$"];//有特殊字符的元素也会根据ASCII码值排序。
var arr = [3,4,15,3,17];//在比较一个数两位数时,先比较第一位数,再比较第二位数,
结果为arr=[15,17,3,3,4]
b.arr.sort(function(){})
一个函数里,用另一个函数作为参数传递,另一个函数叫回调函数。
sort(function(a,b){
//return a-b;//从小到大排序,改变了原来的排序方式(就是不再是按ASCII码值进行排序了)。
return b-a;从大到小排序
})
c.随机排序(先了解怎么用就行)
例子:
var arr = [53,54,3,24,12];
for (var i = 0; i < 10; i++) {
arr.sort(function(a,b){
return Math.random()-0.5;
})
console.log(arr);
}
d.底层实现原理。(了解)
3.ES5新增数组方法
1)forEach(function(item,index,array){});
a.传递一个回调函数
b.这个回调函数没有返回值
c.回调函数的参数
item:每个元素的值
index:元素的下标
array:每次遍历的数组。(这个一般不用,可以不写)
例子
1)arr.forEach(function(item,index,array){
console.log(item,index,array);
});
2)作用forEach计算数组所有元素的和
var sum = 0;
arr.forEach(function(item,index,array){
sum += item;
});
alert(sum);
2) indexOf();
arr.indexOf(值)
定义:检测一某个元素在数组中是否存在,如果存在返回这个元素的下标,如果不存在返-1
a.如果有两个参数arr.indexOf(值,index)(index可以为负数,表示从数组后面开始数,从哪里开始找)
从index开始往右查询这个值的下标;如果存在返回这个元素的下标,如果不存在返-1
b.如果一个数组中有两个相同的值,按这种方式arr.indexOf(值);返回的是第一次出现这个数的下标
3)map();
这是一个映射的函数
方法传递一个回调函数,回调函数传递三个参数,参数与forEach一样。
通过某个条件改变原数组的值,改变后的值 会组成一个新的数组返回。
例子:
var arr = [54,65,434,23,4];
var newArr = arr.map(function(item,index,array){
return item-5;
})
alert(newArr);
4)filter(function(item,index,array){});
这是一个过滤函数
方法传递一个回调函数,回调函数传递三个参数,参数与forEach一样。
最终返回一个过滤后的数组
过滤:通过某个条件,获得符合这个条件的数组元素,组成一个新数组后返回。
例子:
var arr = [43,43,23,6,45,34];
var newArr = arr.filter(function(item,index,array){
return item<10;
})
alert(newArr);
5)reduce(); 归并方法 从数组下标为1的位置开始循环
例子: prev next
var arr = [53, 54, 3,24,12];
var sum = arr.reduce(function(prev,next){//pre 开始有个默认值,这里的默认值是53.表示上一次操 作返回的结果
//next 表示 下一个数
document.write("return的结果是:"+prev+",循环输出的是:"+next+"<br>")
return prev+next;
});
alert(sum)
4.instanceof();(关键字)
用来检测某种引用数据类型的数据是属于哪个对象。
不能用来检测基本数据类型。
例子:
function box(){
}
alert(box instanceof Function);//true
var str="ll";(基本数据类型)
alert(str instanceof String);//false
5.扩展(了解)
精确检测某种数据属性哪个对象。
var type = Object.prototype.toString;
console.log(type.call("fke"));
console.log(type.call(5));
console.log(type.call(null));
console.log(type.call(undefined));
console.log(type.call(NaN));
console.log(type.call([]));
console.log(type.call(true));
console.log(type.call({}));
console.log(type.call(function(){}));
6.内置对象
window,String,Math,Number,Array,正则,Date
7.String 凡是对象,就会有属性或方法
1)String的属性:
(1)length:获取字符串的字符个数(只读)
(2) 可以通过下标获取字符串的某个字符,但是不能修改
比如:str[2]:这种方式可以获取不能修改
2)String的方法:
(1)str.charAt(index); //获取str字符串中index下标位置的字符
(2)str.charCodeAt(index);//获取str字符串中index下标位置的字符的ASCII码值。
(3)String.fromCharCodeAt(ASCII码值);//通过传递ASCII码值获取对应的字符。
(4)str.indexOf("字符",);//与数组方法一样
(5)str.lastIndexOf("字符",index);//和indexOf()相反,第二个参数不识别负数。
从后往前找到一个出现的字符,index不能为负数,但是是从前数,再往前找
(6)str.substr(index,num);//截取字符串,num:截取num个字符,没有num参数,截取到最后。
(7)str.substring(index);//截取字符串,从index位置到最后
str.substring(index,i);//截取字符串,从index位置到i位置的字符,但不包含第i个。
(8)str.replace("str中的字符","被替换的字符");//替换,只能替换查到的第一个字符串
(9)str.split("字符串中的某个字符");把一个字符串转成数组。
(10)toLowerCase();//把字符串转变为小写
(11)toUpperCase();//把字符串转变为大写
第一个字符串变大写
var str = "fljewkjfelkw";
str = str.charAt(0).toUpperCase() + str.substr(1);
alert(str);