手记

数组中常用方法

数组中常用方法

  1. 数组也是对象,也是由键值对组成,属性名为数字(索引)从0开始,length属性是数组的长度
  2. 数组中每一项的值可以是任何数据类型的
  • 方法的作用
  • 方法的参数
  • 方法的返回值
  • 原有数组是否改变
var ary= [1,2,3]   //一维数组
var ary2 = [
{
	name: 'aaa',
	age :'33'
},
{
	name: 'aaa',
	age :'33'
}
]  //多维数组

1 . push方法

  • 作用: 向数组“末尾”追加新内容
  • 参数: 追加的内容(一个或多个)
  • 返回值: 新增后的数组的长度
  • 原有数组: 改变
var ary = [1,2,3];
ary.push(100);  //4
console.log(ary)   //[1,2,3,100]
ary.push(100,{name:'aaa'})   //6
console.log(ary)   //[1,2,3,100,100,{name:'aaa'}]

2. pop方法

  • 作用: 删除数组最后一项
  • 参数: 无
  • 返回值: 被删除的哪一项内容
  • 原有数组: 改变
var ary = [1,2,3];
ary.pop();  // 3
console.log(ary)   //[1,2]

3. shift方法

  • 作用: 删除数组第一项
  • 参数: 无
  • 返回值: 被删除的哪一项内容
  • 原有数组: 改变
var ary = [1,2,3];
ary.shift();  // 1
//原有后面的每一位索引向前进一位
console.log(ary)   //[2,3]

4. unshift方法

  • 作用:向数组第一位追加新内容
  • 参数: 新增的内容
  • 返回值: 新增后数组的长度
  • 原有数组: 改变
var ary = [1,2,3];
ary.unshift(0);  // 4
console.log(ary)   //[0,1,2,3]

5. splice方法

  • 作用:可以删除指定位置的内容,向数组制定位置增加内容,还可以修改指定位置的信息

删除:

ary.splice(n,m)  //从索引n开始,删除m个内容,把删除的部分以一个新数组返回,原有数组改变
var ary = [1,2,3,4,5,6];
ary.splice(2,3);  // [3, 4, 5]
console.log(ary)   //[1,2,6]
ary.splice(2);  //不传m或者传的比数组的length大,删除到末尾   [2,6]
console.log(ary)   //[1]

//扩展: 删除最后一位的几种办法
ary.pop();
ary.length--;
ary.splice(ary.length-1);
delete ary.length-1  //只把元素给删了,length没变

//扩展: 最后一位新增的几种办法
ary.push(100);
ary.splice(ary.lengeth,0,200);
ary[ary.length] = 300;

新增/修改:

ary.splice(n,0,x,...)  //新增
//从索引n开始删除0个内容(没删除),把X或者更多需要插入的内容存放到数组中索引N的“前面”,原有数组改变
var ary = [1,2,3,4,5,6];
ary.splice(2,0,100,200,300);  // [] 因为没删除返回空数组
console.log(ary)   //[1,2,100,200,300,3,4,5,6]


ary.splice(n,m,x,...)  //修改 把原有的内容删除,替换成新增的内容
var ary = [1,2,3,4,5,6];
ary.splice(2,3,100,200,300);  // [] 因为没删除返回空数组
console.log(ary)   //[1,2,100,200,300,6]

6. slice方法

  • 作用:按照条件查找出其中的部分内容
  • 参数: n,m(从n开始查到到m处,不包括m)
  • 返回值: 查找到的内容的新数组
  • 原有数组: 不改变
var ary=[12,23,34,35,56,67,78,89,90]
ary.slice(2,7)//[34,35,56,67,78]
ary.slice(2)//[34,35,56,67,78,89,90]
ary.slice(0)//[12,23,34,35,56,67,78,89,90]  克隆了原数组
ary.slice()//[12,23,34,35,56,67,78,89,90]  克隆了原数组,但是指向的空间地址是改变的
ary.slice(-3,-1)//[78,89] 负数运算规则:数组长度+负数索引

7. concat方法

  • 作用:实现多个数组拼接
  • 参数:数组或者值
  • 返回值: 拼接后的新数组
  • 原有数组: 不变
var ary1 = [12,23],
	ary2 = [34,35,56],
	ary2 = [67,78,89,90];
ary1.concat(ary2,'string',ary3)//[12,23,34,35,56,'string',67,78,89,90]
[]..concat(ary1,ary2,'string',ary3)//[12,23,34,35,56,'string',67,78,89,90]
//基于空数组拼接,在小括号中排列拼接的顺序,空数组不占内容的位置

8. 把数组转化为字符串toString、join

  • 作用:join除了可以转字符串,还可以改变拼接符
  • 参数:连接符(不传只转字符串)
  • 返回值: 拼接或者转换后的字符串
  • 原有数组: 不变
var ary = [67,78,89,90];
ary.join() //'67,78,89,90'
ary.join(',') //'67,78,89,90'
ary.join('+') //324
//基于join可以实现数组中每一项求和的功能

9. reverse方法

  • 作用:把数组倒序排列
  • 参数:无
  • 返回值: 排列后的新数组
  • 原有数组:改变
var ary = [1,2,3,4,5,6];
ary.reverse() //[6,5,4,3,2,1]

10. sort方法

  • 作用:数组排序
  • 参数:无、函数
  • 返回值: 排列后的新数组
  • 原有数组:改变
var ary = [1,2,3,12,5,8];
ary.sort() //[1,12,2,3,5,8] 不传参数,只处理10以内的数字排序
ary.sort(function(a,b){
    return a-b  //升序
    return b-a  //降序
})

11. indexOf/lastIndexOf方法

不兼容ie6/7/8

  • 作用:检测当前值在数组中第一次/最后一次出现位置的索引
  • 参数:要检测的值
  • 返回值: 索引值
  • 原有数组:不变
var ary = [1,2,3,12,5,8];
ary.indexOf(2)  //1
ary.indexOf(20)  //-1
//基于indexOf检测,如果有这一项,返回所在位置的索引,如果没有,返回-1

var ary = [1,2,3,12,5,8];
if(ary.indexOf(100)>-1){//indexOf一般是验证数组中是否包含这一项
    //ary中包含100这一项
}

12. every

不兼容ie6/7/8

  • 作用:检测数组是否全部符合条件
  • 参数:要检测的值
  • 返回值: 布尔值
  • 原有数组:不变
let arr = [1,2,3,4,5]
let arr1 = arr.every( (value, index) =>value<5)
   console.log(arr1) // false
let arr2 = arr.every( (value, index) =>value<6)
   console.log(arr2)  // true

13. some

不兼容ie6/7/8

  • 作用:检测数组只要有一项符合条件即返回true
  • 参数:要检测的值
  • 返回值: 布尔值
  • 原有数组:不变
let arr = [1,2,3,4,5]
let arr1 = arr.some( (value, index) =>value<5)
   console.log(arr1) // true
let arr2 = arr.some( (value, index) =>value > 5)
   console.log(arr2)  // false

14. forEach 、map

  • forEach替代for循环,没有return,不会返回新数组
  • map映射数组 有return 会返回新数组
var arr=[2,2,3,4,4,5,6,6]
//forEach
var res = arr.forEach((item,index)=>{ 
 item = item * 2; 
 return item; 
})
console.log(res); //undefined

//map
var res = arr.map((item,index,arr)=>{ 
 item = item * 2; 
 return item; 
})
console.log(res);// [4, 4, 6, 8, 8, 10, 12, 12]

15. filter

  • 过滤数组,返回符合条件的新数组
let arr = [1,2,3,4,5]
  console.log(arr.filter( (value, index) => value<5))
//[1, 2, 3, 4]
1人推荐
随时随地看视频
慕课网APP