常⽤数组⽅法总结及for循环和fori(in)循环数组:
数组也是对象
数组的循环:for() ,for in
var arr = [ 1,2,3,4,5];
typeof arr //"object"
arr instanceof Array //true
arr instanceof Object //true
for循环操作
for(var i = 0;i<arr.length;i++){
console.log(arr[i]);
}
输出结果 1,2,3,4,5
for in 循环操作
for(var key in arr){
//此时把数组的索引当key(对象中是属性名)
console.log(arr[key]);
}
输出结果 1,2,3,4,5
区别:
for 循环只能遍历到数组私有属性
for in 可以把⼀些⾃定义的公共属性遍历到(原型链)
数组的所有⽅法如下:
如何理解记忆
1、⽅法的意义和作⽤
2、⽅法的形参
3、⽅法的返回值
4、通过此⽅法,原来的数组是否发⽣了改变
================================================== /**数组增加*/
1、push⽅法
1、数组增加  push:向数组的末尾增加新内容
2、参数:长度不限,任何数据类型都可以
3、返回值:新增后的数组长度
4、原有数组改变
2、unshift⽅法(注意:索引会改变索引加⼀)
1、向数组开头追加新内容
2、参数可以是多个任何数据类型的值
3、返回值新增数组的长度
4、原来数组改变
3、把数组当做⼀个普通对象,使⽤对象键值对的操作给其设置新的属性(索引)arr[arr.length]=xxxx  ;//
向数组末尾追加新内容(每次增加⼀个)
/**数组删除*/
4、pop⽅法
删除数组最后⼀项
参数:⽆
返回值:被删除的那⼀项内容
原有数组改变了
5、shift⽅法(注意:索引会改变后⾯每⼀项索引减⼀)
删除数组第⼀项
参数:⽆
返回值:被删除的那⼀项的内容
原来数组改变
6、
delete删除索引不会变 length 不会变
arr.length-- ;删除数组最后⼀项
7、splice⽅法
数组中内置的⽅法,可以实现数组的增加、修改
返回值:被删除的内容(以⼀个新数组保持被删除的内容)
原有数组改变
splice(n,m)从索引n开始删除m个
splice(0)清空数组
splice()⼀项都不删除,返回⼀个新的空数组
实现修改
splice(n,m,x)在原有删除的基础上,⽤x代替删除的内容
实现增加
splice(n,0,x)⼀项不删把x插⼊到索引n的前⾯
splice.(0,0,x)数组前增加新元素
splice.(arr.length,0,x)数组末尾增加
/*数组查询*/
8、slice⽅法
参数:slice(n,m)从索引n开始到索引m处(不包含m)
返回值:把到的部分以⼀个新数组返回
原来数组不变
slice(n)从索引n到末尾
slice(0)/slice()  数组克隆
slice()  为负数索引时把负数索引与长度相加再处理
9、concat⽅法
将多个数组拼接在⼀起
参数:要拼接的内容放在原数组后⾯可以是⼀个数组,也可以是⼀些数据值返回:拼接后的新数组
原来数组不变
concat()不带参数相当于把原有数组克隆⼀份
/把数组转换成字符串/
10、toString⽅法
把数组转换为字符串(⽤逗号分隔)
⽆参数
返回值:转换的字符串
原数组不变indexof能用于数组吗
11、join⽅法
把数组按照指定分隔符转换为字符串
参数:指定的分隔符(默认逗号  ' '  .......)
返回值:转换的字符串
12、reverse⽅法
把数组每⼀项倒过来排列
⽆参数
返回值排序后数组
原有数组改变
13、sort⽅法
实现数组排序
参数⽆/回调函数(⽆参数默认按⾸个数字从⼩到⼤排列)返回值排序后的数组
原有数组改变
ary.sort(function(a,b){
  return a-b;//升序
  return b-a //降序
})
14、indexOf/lastIndexOf
获取当前项在数组中第⼀次或者最后⼀次位置的索引
数组中这两个⽅法IE6-8不兼容
字符串中兼容
若查不到返回-1
兼容写法
Array.prototype.MyindexOf=function(value){
var flag = -1;
for(var i=0;i<this.length;i++){