字符串函数
str.length
可以读取长度 但是不能添加字符
var str = "1245";
str.length // 4位长度
str.charAt()
var str = "abc";
char ch = str.charAt(0);
char ch2 = str.charAt(1);
这时候ch是a,ch2是b;
str.charCodeAt()
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。
字符串截取
substr() 第一个是开始位置,第二个是长度
substring() 第一个开始位置 第二个结束位置
slice() 同数组的slice一样
字符串的查找(和正则一起说明)
str.search();
str.replace();
str.match();
字符串大小写
toUpperCase(); 字符串全部转化为大写
toLowerCase(); 字符串全部转化为小写
Math 对象
round 方法
它对于负值的运算结果与正值略有不同,主要体现在对.5的处理
abs 取绝对值
max方法返回最大的参数,min方法返回最小的参数
Math.max(2, -1, 5) // 5
Math.min(2, -1, 5) // -1
floor 方法返回小于参数值的最大整数
Math.floor(3.2) // 3
Math.floor(-3.2) // -4
ceil方法返回大于参数值的最小整数
Math.ceil(3.2) // 4
Math.ceil(-3.2) // -3
取出最小值
var arr = [2,6,90,40,356,-9,-10000];
function min(arr){
var min = arr[0];
for(var i = 1 ; i < arr.length ; i++){
if(min > arr[i]){
min = arr[i];
}
}
return min;
}
console.log(min(arr));
以上结果等同于 Math.min.apply(null/{},arr);
取出最大值 则相反的写法
var arr = [2,6,90,40,356,-9,-10000];
function max(arr){
var max = arr[0];
for(var i = 1 ; i < arr.length ; i++){
if(max < arr[i]){
max = arr[i];
}
}
return max;
}
console.log(max(arr));
以上结果等同于 Math.max.apply(null/{},arr);
random
返回给定范围内的随机数
/*
写一个函数,获取从min都max之间的随机整数,包括min包括max (***)
*/
function max_random(min,max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
ES5 数组扩展
Array.isArray()
这是Array对象的一个静态函数,用来判断一个对象是不是数组
function isArray(arr){
return Array.isArray ? Array.isArray(arr) : (typeof arr === "object") && (arr instanceof Array);
}
var a = new Array(123);
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false
indexOf() lastIndexOf()
顾名思义,这两个方法用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。
var a = new Array(1,2,3,3,2,1);
console.log(a.indexOf(2)); //1
console.log(a.lastIndexOf(2)); //4
forEach(function(e,i,array)){
e : 当前元素
i : 当前元素索引值
array:整个数组
}
var a = new Array(1,2,3,4,5,6);
a.forEach(function(e,i,array){
array[i]= e + 1;
});
console.log(a); //[2, 3, 4, 5, 6, 7]
every 与 some
这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值
every是所有函数的每个回调函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false。some函数是“存在”有一个回调函数返回true的时候终止执行并返回true,否则返回false。
var a=new Array(1,2,3,4,5,6);
console.log(a.every(function(e, i, arr){
return e < 5;
}));
console.log(a.some(function(e,i,arr){
return e > 4;
}));
在空数组上调用every返回true,some返回false
map 和 forEach 类似
与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变
var a = new Array(1,2,3,4,5,6);
console.log(a.map(function(e){
return e * e;
})); // [1, 4, 9, 16, 25, 36]
console.log(a); //[1, 2, 3, 4, 5, 6]
arr.map(function(e){
return e*e;
})
filter
返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。
var a = new Array(1,2,3,4,5,6);
console.log(a.filter(function(e){
return e % 2 == 0;
})); // [2, 4, 6]
console.log(a); //[1, 2, 3, 4, 5, 6]
.reduce 和 reduceRight
遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向,方法有两个参数
回调函数:
1. 把两个值合为一个,返回结果
2. value,一个初始值,可选
var a = new Array(1,2,3,4,5,6);
console.log(a.reduce(function(v1, v2){
return v1 + v2;
})); // 21
console.log(a.reduceRight(function(v1, v2){
return v1 - v2;
}, 100)); // 79