Javascript知识点汇总(一):数组常用方法整理

数组:

1、创建方式:

(1)字面量创建:

var arr=[1,2,3]

(2)构造函数创建:

var arr=new Array(2)  #参数为2,表示生成一个两个成员的数组

单个非数值作为参数时,表示返回的是新数组成员:
new Array(“222”)
// [‘222’]

多参数时,所有参数都是新数组成员
new Array(1,2)
// [1,2]

2、基本操作:

(1) push() :
在数组末尾添加一个或多个元素,返回添加后的数组长度,原数组发生改变。

var arr=[1,2]
var a=arr.push("22",4)
console.log(arr)  //[1,2,"22",4]

(2)pop() :
删除数组的最后一个元素,返回这个删除的元素,原数组发生改变(空数组返回undefined)。

var arr=[1,2,3,4]
arr.pop();
console.log(arr)  //[1,2,3]

(3)unshift() :
在数组的第一个位置添加一个元素,返回添加后的数组长度,原数组发生改变。
(4)shift() :
删除数组中的第一个元素,返回这个删除的元素,原数组发生改变。
(5)slice(start,end) :
提取目标数组中的一部分成员,返回一个新数组,原数组不变:

第一个参数表起始位置索引(从0开始),第二个参数为终止位置(不包括该位置元素)
第二个参数为空,则一直返回到原数组的最后一个元素,不写参数表示拷贝一个原数组

(6)splice(start,length) :
删除目标数组中的一部分成员 ,返回被删除元素,改变原数组。

一个参数 : 从该参数对应位置开始截取,直至数组结束
两个参数 : 第一个参数表示截取起始位置,第二参数表示截取的长度
三个或三个以上的参数 : 从截取起始位置开始增加第三个及以后的参数 原数组发生改变

(7)reverse() :
数组翻转,返回改变后的数组,改变原数组。
(8)sort() :
对数组成员排序,默认是按照字典顺序排序(先转换成字符串),改变原数组。

常用案例:
var arr=[1,4,2,6,3,7]
arr.sort(function(a,b){
return a-b; //升序
})
console.log(arr) //[1,2,3,4,6,7]

(9) join() :
将数组转换成字符串,默认以 , 分割,也可指定数组内的参数作为分割符。

var arr=new Array(3);
arr[0]="lala";
arr[1]=4;
arr[2]=3;
console.log(arr.join());  // lala,4,3
3、ES5新增数组方法:

(1)Array.isArray(obj) :
判断 一个对象是否为数组,对象是数组返回 true,否则返回 false
(2)map() :
将数组的所有成员遍历传参给函数,把每一次的执行结果组成一个新数组返回,原数组不变。

let arr=[1,2,3,4,5]
let res=arr.map(function(n){
return n+1
})
console.log(res)  //[2,3,4,5,6]

扩展:
[“1”, “2”, “3”].map(parseInt); //结果 [1, NaN, NaN]  
想要输出结果是[1,2,3]:
注:
parsnInt()函数语法:parseInt(string, radix) radix默认为10
回调函数语法:function callbackfn(value, index, array1)
value 数组元素的值。
index 数组元素的数字索引。
array1 包含该元素的数组对象。

function return(element){
return parseInt(element,10);
}
console.log([“1”,“2”,“3”].map(return)) //[1,2,3]

3、foreach():
通过遍历数组元素来操作数据,不会返回遍历的所有数据,无法中断执行,会将所有成员遍历完。

如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach方法。
与foreach区别:

共同点:

1.都是循环遍历数组中的每一项。
2.forEach() 和 map() 里面每一次执行的匿名函数都支持3个参数:
数组中的当前项item,当前项的索引index,原始数组input。
3.匿名函数中的this都是指Window。
4.只能遍历数组。

不同点:

1.forEach(), 没有返回值,只用来操作数据

var ary = [12,23,24,42,1];  
var res = ary.forEach(function (item,index,input) {  
  input[index] = item*10;  
})  
console.log(res);  //undefined;  
console.log(ary);  // [120, 230, 240, 420, 10]  #原数组发生改变; 

2.map(),有返回值,可以return 出来。

var ary = [12,23,24,42,1];  
var res = ary.map(function (item,index,input) {  
    return item*10;  
})  
console.log(res);   //[120,230,240,420,10];  
console.log(ary);  //[12,23,24,42,1];  #不改变原数组

4、every():
(返回值为布尔)接受一个函数作为参数,所有数组成员依次执行该函数

使用指定函数检测数组中的所有元素,检测数组所有元素是否都符合指定条件(通过函数提供)全部满足返回true,否则返回false;

let arr=[1,2,3,4,5]
let res=arr.every(function(v){
return v>0;
})
console.log(res)   //true

5、some():
(返回值为布尔) 接受一个函数作为参数,所有数组成员依次执行该函数

依次执行数组的每个元素,检测数组中的元素是否满足指定条件(函数提供),只要有一个满足返回true,否则false

6、filter():
(过滤),将数组的所有成员依次传入参数函数遍历,返回符合条件的数组成员

创建一个新的数组,新数组中的元素是通过函数遍历,返回数组中符合条件的所有元素

let arr=[1,3,54,5,6]
let res=arr.filter(v=>{
return v>10;
})
console.log(res)  //54

7、indexOf():
返回给定元素在数组中第一次出现的位置索引,如果没有出现则返回-

let arr=[1,"b",8,7]
let a=arr.indexOf("b")
let b=arr.indexOf(2)
console.log(a,b)  // 1 -1 

可以接受第二个参数,表示搜索的开始位置,返回原数组中的索引位置

let arr=[6,"b","c","f",5]
let c=arr.indexOf("c",2)
let d=arr.indexOf(6,1)
console.log(c,d) // 2  -1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值