数组的检测:es3出来以后检测数组成为一个很经典的问题。对于一个网页或者一个全局的作用域而言,使用instanceof 就可以,但是如果有框架嵌套就会失去作用。
栈方法: -> 先入后出 栈中插入叫做推入,移除叫弹出。
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 : 删除、插入、替换,然后返回处理后的项目。(开始的位置,要剪切的数目,添加数目) ---->剪切、添加 跟slice的不同之处就在于这个 会对原来的数组进行操作 ,返回的是被删除的数组的值。
arrayObject.splice(index,howmany,item1,.....,itemX)
slice() :从已有的数组中返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 ----->复制选中的一个数组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'] // 返回值是被删除的对象 == 替换
位置方法:浏览器 ie9++
indexof(): es5新增数组查找方法,查找不到返回-1; arr.indexof('anikin'); 查找anikin的位置
lasetIndexof() 同上,只是从最后开始查找
join() 方法用于把数组中的所有元素放入一个字符串。如果不指定分隔符,默认是逗号
字符串
- 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'; // 个数
- 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. 大小写转化:
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);