js判断是数组:
JavaScript 没有一个好的机制来区别数组和对象,我们可一个自己实现一个函数
|
push pop shift(前移除) unshift(前压入) //返回的是数组长度
1,join----------数组转换为字符串
2,reverse----数组逆序(数组被修改)var arr=[1,2,3];
arr.join("_"); //'1_2_3"
3,sort---------数组排序(数组被修改)var arr=[1,2,3];
arr.reverse(); //[3,2,1]
arr; //[3,2,1]
4,concat-----数组合并(数组不会被修改)var arr=[13,25,43,3];
arr.sort(); //[13,25,3,43]
arr.sort(function(a,b){
return a-b;
}); //[3,13,25,43]
5,slice------数组切片(截断获取)(数组不会被修改)第一个变量是index,第二个变量是末尾index+1,即【a,b)。第二个为空为到末尾var arr=[1,2,3];
arr.concat(4,5);//[1,2,3,4,5]
arr; //[1,2,3]
arr.concat([10,11],13); //[1,2,3,10,11,13] 数组别拉平
arr.concat([1,[2,3]]); //[1,2,3,1,[2,3]] 数组不会被拉平两次
6,splice----数组胶接(删除 替换 插入)(数组被修改)第一个变量是index,第二个变量是长度,第二个为空为到末尾var arr=[1,2,3,4,5];
arr.slice(1,3); //[2,3]
arr.slice(1); //[2,3,4,5]
arr.slice(1,-1) //[2,3,4] -1 为5 的index
arr.slice(-4,-3)//[2]
//删除
var arr=[1,2,3,4,5];
var b = arr.splice(2,2); //b = [3,4]
arr; //[1,2,5]
var arr=[1,2,3,4,5];
arr.splice(2); //[3,4,5]
var arr=[1,2,3,4,5];
arr.splice(1,1,'a','b'); //替换
arr //[1,'a','b',3,4,5]
arr.splice(1,0,'a','b'); //插入
arr //[1,'a','b',2,3,4,5]
7,从这往下是es5只有ie9以上支持
7,forEach------数组遍历(数组不会被修改)
var arr=[1,2,3,4,5];
arr.forEach(function(x,index,a){
console.log(x + '|' + index+ '|' + (a === arr));
});
// 1|0|true
8,map--------数组映射(数组不会被修改)// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
arr.map(function(){
return x+10;
})
9,filter-------数组过滤(数组不会被修改)
arr.filter(x,index){
return index%3 === 0 || x>8;
})
10,every some---数组判断
11,reduce,reduceRight--数组两两处理
var arr= [1,2,3];
var sum =arr.reduce(function(x,y){
console.log(x+"|"+y)
return x+y;
},0) //传入0 作为第一轮x 如果不传则直接是1|2
//0|1
//1|2
//3|3
sum; //6
12,indexOf lastIndexOf --数组索引 第一个参数是要找的元素 第二个元素是搜索开始位置 lastIndexOf是从右往左找。
第一个参数是要找的元素,第二个参数是起始index。起始index为负数时,则将从数组末尾开始计算,-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找,以此类推。需要注意,如果参数中提供的索引值是一个负值,仍然会从前向后查询数组
字符串是类数组元素,没有join等方法var arr= [1,2,3,2,1];
arr.indexOf('2') //1
arr.indexOf('99') //-1
arr.indexOf(1,1) //4
arr.indexOf(1,-3) //4
arr.indexOf(2,-1)//-1
arr.lastIndexOf(2,-2)//3
arr.lastIndexOf(2,-3)//1
var str = 'hello world'
str.charAt(0) //'h'
str[1] //'e'
Array.prototype.join.call(str,'_'); //'h_e_l_l_o__w_o_r_l_d'
String:
1,string.chatAt(pos) 返回pos位置处的字符
2,string.lastIndexOf(searchString, position) 从position位置开始查着searchString
3,string.search(regexp) 同indexOf类似,接受一个正则表达式,返回第一个匹配的首字符位置,自动忽略g 标志
4,string.match(regexp)
依据 g 标识来决定如何进行匹配。如果没有 g 标识,那么结果与调用regexp.exec(string)结果相同。如果 regexp 带有 g 标识,那么它生成一个包含所有匹配(除捕获分组之外)的数组
var text = '<html><body bgcolor=linen><p>' +'This is <b>bold<\/b>!<\/p><\/body><\/html>';var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;var a, i;a = text.match(tags);for (i = 0; i < a.length; i+= 1) {console.log( '// [' + i + ']' + a[i]);}// 结果// [0]<html>// [1]<body bgcolor=linen>// [2]<p>// [3]This is// [4]<b>// [5]bold// [6]</b>// [7]!// [8]</p>// [9]</body>// [10]</html>
5,string.replace(searchValue, replaceValue) 如果它是字符串或者正则但是没有带有 g 标志,那么 searchValue 只会在第一次出现的地方被替换,如果是正则带 g 标志。会替换所有匹配。如果 replaceValue 是一个字符串,字符$拥有特殊含义。replaceValue 是一个函数,那么每遇到一个匹配,函数就会被调用一次,用该函数返回的字符串会被用做替换文本。
6,string.toLocaleUpperCase() string.toLocaleLowerCase() string.toUpperCase() string.toUpperCase()