常用数组方法总结及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方法

把数组转换为字符串(用逗号分隔)

无参数

返回值:转换的字符串

原数组不变

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++){

  if(this[i] == value){

  flag= i;

  break;

}

}

return flag;

}

 

 

15、forEach方法

遍历数组中的每一项

arr.forEach(function(value,index){})

 

16、map方法

arr.map(function(value,index){})

把当前数组每一项进行操作返回

 

17数组去重

方法一

Array.prototype.Myunique=function(){

var arr=[ ];

for(var i=0;i<this.length;i++)

{

   if( arr.indexOf(this[i]) == -1)

  {

    arr.push(this[i]);

  }

}

  return  arr;

}

方法二

 Array.prototype.MyUnique = function MyUnique() {

  var  obj = { };

       for(var i =0 ;i<this.length;i++){

    var cur = this[i];

   if(obj[cur] == this[i]){

    this[i] = this[this.length-1];

    this.length--;

    i--;

    continue;

}

  obj[cur]=this[i]; 

 

 

obj=null;

return this;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2017-12-20 15:31  cm笔记簿  阅读(3157)  评论(0编辑  收藏  举报

导航