数组方法

创建数组


使用 Array 构造函数创建数组

var arr1 = new Array(); //创建一个空数组
var arr2 = new Array(20); // 创建一个包含20项的数组
var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组

使用数组字面量创建数组

var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含1项的数组
var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组

数组方法


1. join 

join,将数组转为字符串,接收一个参数为分隔符,无参数默认逗号( , )分隔,原数组不变

var ary = [1,2,3];
ary.join();  // "1,2,3"
ary.join("/") // "1/2/3"
ary // [1, 2, 3]

 2. push 

push,向数组的末尾添加元素,接收一个或多个参数,返回新数组的 len 长度,原数组改变

var ary = [1,2,3];
ary.push(4);
ary // [1,2,3,4]

 3. pop

pop,删除数组的末尾元素,返回删除的元素,原数组改变 

var ary = [1,2,3,4,5,6];
ary.pop(); // 6
ary // [1,2,3,4,5]

4. shift

shifit,删除数组第一个元素,返回删除的元素,原数组改变

var ary = [1,2,3,4];
ary.shift(); // 1
ary // [2,3,4];

5. unshift

unshift,给数组的头添加元素,返回新数组的 len 长度,原数组改变

var ary = [1,2,3];
ary.unshift(4,5,6); // 6
ary // [4,5,6,1,2,3]

6. sort

sort,数组排序,接受一个函数为参数,无参数时,只能排序 0-9 以内,原数组改变

// 0-9 以内数组排序
var ary = [3,6,8,9,2,0,1,4,5]
ary.sort(); //[0, 1, 2, 3, 4, 5, 6, 8, 9]

// 10以上排序
var ary = [6,7,8,10,11,23,13];
ary.sort(function(a,b){
    return a-b
}) //[6, 7, 8, 10, 11, 13, 23]

7. reverse

reverse,将数组以相反方式展示,返回改变后的数组,原数组改变

var ary = [1,2,3,4,5];
ary.reverse() // [5, 4, 3, 2, 1]

8. concat

concat,接受N个参数,无参数时,表示复制一份数组,原数组不变

var ary = [1,2,3];
var ary2 = ary.concat(); 
ary2 // [1,2,3]
ary // [1,2,3]

ary.concat(4,5); // [1,2,3,4,5]
ary // [1,2,3]

9. slice

slice,接受1或2个参数,参数为数组索引,从 N 处截取到 M 处,不包含 M ,原数组不变

var ary = [1,2,3,4,5];
ary.slice(1); // [2, 3, 4, 5]
ary.slice(1,4) // [2, 3, 4]

ary.slice(0) // [1, 2, 3, 4, 5] ,相当于复制一份数组

ary // [1, 2, 3, 4, 5]

10. splice

splice,3种功能,接受1到3个参数,参数为数组索引,原数组改变

  • 1个参数时:从 N 处截取到数组末尾,返回截取的数组
  • 2个参数时:从 N 处截取到 M 处,返回截取的数组
  • 3个参数时
    • 添加处理,起始位置,0 (删除项),要添加的元素
    • 替换处理,起始位置,删除项,要替换的元素
//从索引 N,截取到末尾
var ary = [1,2,3,4,5]
ary.splice(1); //[2, 3, 4, 5]
ary // [1]

//索引 N,截取到 M 个
var ary2 = [1,2,3,4]
ary2.splice(2,4); //[3, 4]
ary2 //[1, 2]

//添加元素
var ary3 = [1,2,3,4]
ary3.splice(0,0,5,6,7);//[]
ary3//[5, 6, 7, 1, 2, 3, 4]

//替换元素
var ary4 = [1,2,3,4,5]
ary4.splice(0,2,8,9); //[1, 2]
ary4 // [8, 9, 3, 4, 5]


11. indexOf

indexOf,检查你输入的值是否存在,从索引0开始查找,存在返回所在索引,不存在返回 -1,原数组不变

var ary = [1,2,3,4];
ary.indexOf(2); // 1
ary.indexOf(22); // -1
ary // [1,2,3,4]

12. lastIndexOf

laxtIndexOf,检查你输入的值是否存在,从索引末尾开始查找,存在返回所在索引,不存在返回 -1,原数组不变

var ary = [1,2,3,4,5,6]
ary.lastIndexOf(2); //1
ary.lastIndexOf(22);// -1
ary // [1, 2, 3, 4, 5, 6]

13. forEach

forEach(),对数组进行遍历循环,参数是function类型,默认参数分别是:当前项,每项对应索引,数组本身,

                   无返回值,原数组不变

var ary = [1,2,3,4,5]
ary.forEach(function(cur,index,arr){
	console.log("当前项:" + cur + " | 对应索引" + index + " | 原数组:" + arr);
})
//当前项:1 | 对应索引0 | 原数组:1,2,3,4,5
//当前项:2 | 对应索引1 | 原数组:1,2,3,4,5
//当前项:3 | 对应索引2 | 原数组:1,2,3,4,5
//当前项:4 | 对应索引3 | 原数组:1,2,3,4,5
//当前项:5 | 对应索引4 | 原数组:1,2,3,4,5
ary //[1,2,3,4,5]

14. map

map(),类似于“映射”,用法和 forEach 类似,根据调用函数处理返回值,原数组不变

//没有返回值
var ary = [1,2,3,4,5]
ary.map(function(cur,index,arr){
    console.log(cur * 2);
})
//2
//4
//6
//8
//10
//[undefined, undefined, undefined, undefined, undefined]
ary// [1, 2, 3, 4, 5]

//有返回值
var ary2 = [1,2,3,4,5]
ary2.map(function(cur,index,arr){
    return cur * 2
})
// [2, 4, 6, 8, 10]
ary2// [1, 2, 3, 4, 5]

15.filter

filter(),“过滤”功能,对数组每一项运行指定函数,返回满足过滤条件组成的新数组,原数组不变

var ary = [1,2,3,4];
ary.filter(function(cur,index,arr){
    return cur > 3
}) //[4, 5]

ary // [1,2,3,4]

16. every

every(),判断数组中每一项是否满足条件,只有数组所有项都满足条件,才会返回true

var ary = [1,2,3,4,5];
ary.every(function(cur){
	return cur < 10
}) //true
ary.every(function(cur){
	return cur < 1
}) //flase

ary // [1,2,3,4,5]

17. some

some(),判断数组中的每一项是否满足条件,有一条满足,就返回true

var ary = [1,2,3,4];
ary.some(function(cur){
	return cur > 4
})//false
ary.some(function(cur){
	return cur > 3
})//true
ary.some(function(cur){
	return cur < 3
})//true

18. reduce && reduceRight

reduce && reduceRight,函数累加器,接受4个参数(上次值,当前值,当前值索引,原数组)

               返回一个回调函数,然后将前一次函数结果和下一次数据在执行次回调函数

//reduce
var ary = [1,2,3]
ary.reduce(function(par,cur){
	return par * cur
}) // 6
ary//[1,2,3]

//reduceRight
var ary2 = [1,2,3]
ary2.reduceRight(function(a,b){
	return a + b
})//6
ary2//[1,2,3]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值