js 数组 String方法整理

来源:互联网 发布:js写插件 编辑:程序博客网 时间:2024/06/09 19:29

js判断是数组:

JavaScript 没有一个好的机制来区别数组和对象,我们可一个自己实现一个函数

var is_array = function (value) {
return Object.prototype.toString.apply(value) === '[object Array]';
}

 push pop shift(前移除) unshift(前压入) //返回的是数组长度

1,join----------数组转换为字符串

var arr=[1,2,3];

arr.join("_");  //'1_2_3"

2,reverse----数组逆序(数组被修改)

var arr=[1,2,3];

arr.reverse(); //[3,2,1]

arr;   //[3,2,1]

3,sort---------数组排序(数组被修改)

var arr=[13,25,43,3];

arr.sort(); //[13,25,3,43]

arr.sort(function(a,b){

return a-b;

}); //[3,13,25,43]

4,concat-----数组合并(数组不会被修改)

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]] 数组不会被拉平两次

5,slice------数组切片(截断获取)(数组不会被修改)第一个变量是index,第二个变量是末尾index+1,即【a,b)。第二个为空为到末尾

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]

6,splice----数组胶接(截断去除)(数组被修改)第一个变量是index,第二个变量是长度,第二个为空为到末尾



var arr=[1,2,3,4,5];

arr.splice(2,2);  //[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]

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

// 2|1|true

// 3|2|true

// 4|3|true

// 5|4|true

8,map--------数组映射(数组不会被修改)

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表示从倒数第二个元素开始查找,以此类推。需要注意,如果参数中提供的索引值是一个负值,仍然会从前向后查询数组

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

字符串是类数组元素,没有join等方法

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()




0 0
原创粉丝点击