您的位置:首页 > 其它

数组和字符串常见操作

2017-03-17 10:18 162 查看
数组

数组的检测:es3出来以后检测数组成为一个很经典的问题。对于一个网页或者一个全局的作用域而言,使用instanceof 就可以,但是如果有框架嵌套就会失去作用。es5新增方法: Array.isArray() // 兼容级别是ie9,全兼容的请看 点我 看页面底部
所有的对象都具有 toLocaleString(). toString() valueOf() 方法

栈方法: -> 先入后出 栈中插入叫做推入,移除叫弹出
push: 在最后一位推入,返回的是推入后整个数组的长度。
pop(): 删除最后一位,返回的是删除项。

队列方法:->先入先出
shift() : 在数组的首位进行删除,返回该项。
unshift(): 在数组的首位进行添加,返回的是添加后整体数组。

重排序方法: 这两个方法操作的都是原数组,因此返回值跟原来的数组值都是发生了改变的。
sort():默认是调用转型函数toString()方法,比较的其实是ascill值,因此不准确。它可以接受一个比较函数,用于比较。
reverse() : 反转数组的顺序。
var arr = new Array( 'rose','anikin','cc','jspn','blue','az' );
var res = new Array( 34,2,65,3,1,0,29 );
// 适合所有的比较,包括数值型或者字母型的数组
function compare( val1,val2 ){
if( val1<val2 ){
return -1;
}else if( val1>val2 ){
return 1
}else{
return 0
}
}
//  如果单纯是数值型的数组,那么就可以使用这个比较简单的 比较函数
function compare2( v1,v2 ){
return v1-v2;
}
var x = arr.sort( compare );
var y = res.sort(compare);
var z = res.sort(compare2);

document.write( x ); //anikin,az,blue,cc,jspn,rose
document.write( y ); // 0,1,2,3,29,34,65
document.write( z ); // 0,1,2,3,29,34,65
操作方法:
concat: 无参时返回副本,有参时添加到当前数组的后面,合成一个新的数组返回。
splice[/b] : 删除、插入、替换,然后返回处理后的项目。(开始的位置,要剪切的数目,添加数目) ---->剪切、添加 跟slice的不同之处就在于这个会对原来的数组进行操作[/b],返回的是被删除的数组的值。
arrayObject.splice(index,howmany,item1,.....,itemX)
var arr1 = ['11','22','33','44','55'];
// 替换

arr1.splice( 1,0,'aaa','bbb' );

console.log( arr1 )  // ['11','aa','bb','22','33','44','55']

// 删除
var res = arr1.splice( 1,1 );
console.log(arr1 );// ['11','33','44','55']  res = '22';

/ / 删除的同时在添加
arr1.splice( 2,2,'ankin','rose' );
console.log( arr1 ); // ['11','22','anikin','rose','55'] //  返回值是被删除的对象 == 替换
slice() :从已有的数组中返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 ----->复制选中的一个数组

位置方法:浏览器 ie9++

indexof(): es5新增数组查找方法,查找不到返回-1; arr.indexof('anikin'); 查找anikin的位置
lasetIndexof() 同上,只是从最后开始查找

join() 方法用于把数组中的所有元素放入一个字符串。如果不指定分隔符,默认是逗号

字符串1 字符方法:
charAt( index ) : 返回对应位置的字符串charCodeAt( index ): 返回对应位置字符串的字符编码。
2. 字符串操作方法:
concat( string ): 将一个或者多个字符串连接起来,实际使用的不多,一般采用加号形式。 substring() [/b]方法用于提取字符串中介于两个指定下标之间的字符。stringObject.substring(start,stop)。不包含结束。返回的是一个新的字符串
es提供了三个基于子字符串创建新字符串的方法:slice() 、substr() 和 substring() 。 比较如下:var str = 'hello world';
str.slice(3); // 'lo world';
str.substring(3); // 'lo world';
str.substr(3); // 'lo world';
-------------------------------------------------
str.slice(3,7); // 'lo w';
str.substring(3,7); // 'lo w';
str.substr(3,7); // 'lo worl'; // 个数

3 位置方法:indexOf( subSting ,[index])[/b] 从前面返回搜索字符串的索引。如果没有匹配项,返回 -1 。如有第二个参数则表示的是从该位置开始搜搜。lastIndexOf ( subString ,[index]) 从后面
var str = 'aniki is my engalings name';
var positions = new Array();
var pos = str.indexOf('n');
while( pos>-1 ){
positions.push( pos );
pos = str.indexOf('n', pos +1);
}
alert( positions ); // 1,5,15,22

4. 大小写转化: toLowerCase(): toUpperCase()
5 模式匹配

match() – 本质上与调用 RegExp exec() 方法相同,返回的是个数组。
replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串
search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1
var str = 'This is my English name anikin';
var re = /anikin/g;
var re2 = /\s+/g;
// alert( re.test(str) ); //  RegExp()  对象提供的一个方法;

//  String  包装对象下面的四个方法方法:
/*  1:  match: 返回符合条件的子串
2: replace(re,replacement);  返回的是替换后的内容,以前的内容是不变的;
3: search()  在复制上操作; 返回的是字符串开始的位置
4: split()   在复制的组上操作,不修改原来的数组
*/
// alert( str.match(re) );
// var a = str.replace(re,'Hello AngularJs');
// var b = str.search(re);

var c = str.split(' ',2);
console.log(c);  // ["This", "is", "my", "English", "name", "anikin"]
var d = str.split(re2);
es5: 新增trim()方法split() 方法用于把一个字符串分割成字符串数组。String.split() 执行的操作与 Array.join 执行的操作是相反的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: