JavaScript中数组的方法(全)

数组的方法

ES5
Array.isArray(value);

判断某个值到底是不是数组;

let arr= [1,2,3];
if(Array.isArray(arr)){
	console.log('arr是数组');
}else{
    console.log('arr不是数组');
}
//arr是数组
join()

用于把数组中所有元素放入一个字符串,元素是通过指定的分隔符分隔的,不指定分隔符默认用逗号分隔;

let arr = ['a','b','c'];
console.log(arr.join());//a,b,c
console.log(arr.join('.'));//a.b.c
push()

可以接收任意数量的参数,将他们逐个添加到数组末尾,并返回修改后数组的长度;

let arr = [1,2,3];
let length = arr.push(4,5,6);
console.log(length);//6
console.log(arr);//[1,2,3,4,5,6]
unshift()

可以接收任意数量的参数,将他们逐个添加到数组头部,并返回修改后数组的长度;

pop()

从数组末尾移除最后一项,返回移除的项;

let arr = [1,2,3];
let item = arr.pop();
console.log(item);//3
console.log(arr);//[1,2]
shift()

从数组中第一个项,并返回该项;

sort()

排序,默认是升序,sort()方法会调用toString()方法,所以比较的是字符串;

//例一
let values = [5,2,3,4,1];
values.sort();
console.log(values); //[1,2,3,4,5]
//例二
let values = [0,1,15,10,5];
values.sort();
console.log(values); //[0,1,10,15,5]
//例三
function compare(value1, value2){
    if(value1 < value2){
        return -1;
    }else if(value1 > value2){
        return 1;
    }else{
        return 0;
    }
}
let values = [0,1,15,10,5];
values.sort(compare);
console.log(values); //[0,1,5,10,15]
reverse()

反转数组项的顺序;

let values = [1,2,3,4,5];
values.reverse();
console.log(values); //[5,4,3,2,1]
concat()

创建当前数组的一个副本,然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组,不改变原数组;

let arr1 = [1,2,3];
let arr2 = arr1.concat([4, 5, 6]);
console.log(arr1);// [1,2,3]
console.log(arr2);// [1,2,3,4,5,6];
slice()

slice(start , end);

start: 可选,从该位置开始截取;

end:可选,截取结束;

截取数组,返回截取的项,不改变原数组;

let arr = [1,2,3,4,5,6];
let newArr = arr.slice(2);
let newArr2 = arr.slice(2,4);
console.log(newArr);// [3,4,5,6]
console.log(newArr2);// [3,4];
splice()
删除:

可以删除任意数量的项,返回一个数组(包含删除的项);需要指定两个参数:要删除的第一个项的位置和要删除的项的个数;

let arr = [1,2,3,4,5,6];
let items = arr.splice(1,3)
console.log(items);//[2,3,4]
console.log(arr);//[1,5,6] 改变了原数组
插入

可以向指定位置插入任意数量的项,返回一个空数组;需提供三个参数:起始的位置、0、要插入的项;

let arr = [1,2,3,4,5,6];
arr.splice(2,0,'haha');
console.log(arr);// [1,2,'haha',3,4,5,6];
替换

可以向指定位置插入任意数量的项,并删除任意数量的项;需提供三个参数:其实的位置、要删除的项的个数、要插入的项;

let arr = [1,2,3,4,5,6];
let deleteItem = arr.splice(2,2,'ha','ha');
console.log(arr);//[1,2,'ha','ha',5,6]
console.log(deleteItem);//[3,4]
indexOf()、lastIndexOf()

两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引,其中indexOf从数组的开头向后查找,lastIndexOf则从数组的末尾开始向前查找,找不到返回-1;

let number = [1,2,3,4,5,4,3,2,1];
console.log(number.indexOf(4));//3
console.log(number.lastIndexOf(4));//5
console.log(number.indexOf(6));//-1
forEach()、map()、filter()、every()、some()

每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值;

forEach():对数组中的每一项运行给定的函数,没有返回值;

map():对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组;

filter():对数组中的每一项运行给定的函数,返回改函数会返回true的项组成的数组;

every():对数组中的每一项运行给定的函数,如果该函数对数组的每一项都返回true,则返回true;

some();对数组中的每一项运行给定的函数,如果该函数对数组的任意一项返回true,则返回true;

reduce()、reduceRight()

迭代数组所有的项,然后构建一个最终的返回值;reduce()是从数组第一项开始,逐个遍历到最后,reduceRight()则是从数组最后一项开始,向前遍历到第一项;

这两个方法都接受两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传给reduce() 和 reduceRight() 的函数接收4个参数:前一个值,当前值,项的索引和数组对象;

//数组求和
let values = [1,2,3,4,5];
let sum = values.reduce(function(prev,cur,index,array){
    return prev + cur;
});
console.log(sum);//15
ES6扩展
扩展运算符"…"

将一个数组转为用逗号分隔的参数序列。

console.log(...[1,2,3]);// 1,2,3
合并数组
const arr1 = [1,2,3];
const arr2 = [4,5,6];
console.log([...arr1,...arr2]);//[1,2,3,4,5,6]
与解构赋值结合
 const [first, ...rest] = [1, 2, 3, 4, 5, 6];
 console.log(first)//first  1
 console.log(rest)//rest  2,3,4,5,6
字符串
 console.log([...'hello']);//['h','e','l','l','o']
Array.from()

用于将两类对象(类似数组的对象(伪数组)、可遍历对象)转换为真正的数组;

//例一
let likeArray = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length:3
}
let arr = Array.from(likeArray);
console.log(arr)//['a','b','c']
//例二
 console.log(Array.from('hello'));// ['h','e','l','l','o'];
//例三
 console.log(Array.from(new Set(['a', 'b'])));//['a','b'];
Array.of()

将一组值转换为数组;

 console.log(Array.of(1, 2, 3));//[1,2,3]
copyWith()

在当前数字内部将指定位置的成员复制到其他位置(会覆盖原有成员)然后返回当前数组;

Array.prototype.copyWithin(target,start = 0, end = this.length)

target(必选):从该位置开始替换数据;

start(可选):从该位置开始读取数据;

end(可选):到该位置前停止读取数据;

console.log([1, 2, 3, 4, 5].copyWithin(0, 3));//[4,5,3,4,5]

console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4));//[4,2,3,4,5]
find()

找出第一个符合条件的数组成员,参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员;没有符合条件的成员则返回undefined;

let result = [1,5,10,15].find((value, index, arr) => {
    return value > 9;
});
console.log(result);//10
findIndex()

同find(),只不过反的是下标,找不到返-1;

fill()

使用给定值填充一个数组;

fill(要填充的值,填充的起始位置,填充的结束位置);

new Array(3).fill(7); //[7,7,7]
['a','b','c'].fill(7); //[7,7,7]
['a','b','c'].fill(7,1,2); //['a',7,'c']
entries()、keys()、values()

遍历数组,返回一个遍历器对象,可以用for…of循环遍历;

for(let index of ['a','b'].keys()){
    console.log(index);
}//  0  1

for(let element of ['a','b'].values()){
    console.log(element);
}//  'a'  'b'

for(let [index, element] of ['a','b'].entries()){
    console.log(index, element);
}
// 0 'a'
// 1 'b'
includes()

Array.prototype.includes()返回一个布尔值,表示某个数组是否包含给定的值;

[1,2,3].includes(2)// true
[1,2,3].includes(4)// false
[1,2,NaN].includes(NaN)// true
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值