数组常用API

数组的常用方法

shift():删除数组的第一项

返回值:被删除的项,

改变原数组

let arr = [11, 33, 55, 77];
arr.shift(); // 删除的第一项为0
console.log(arr); // [33, 55, 77]

unshift():向数组首位添加新内容

参数:要添加的项,

多项用之间用逗号隔开,

返回值:新数组的长度,

改变原数组

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

push():向数组的末尾添加新内容

参数:要添加的项。传递多个用逗号隔开,任何数据类型都可以,

返回值:新增后数组的长度,

改变原数组

let arr = [11, 22, 33];
arr.push(66); // 返回一个新的长度 
// length = 4
console.log(arr); // 结果为 [11, 22, 33, 66]

pop():删除数组的最后一项

返回值:被删除的项

改变原数组

let arr = [11, 33, 55, 77];
arr.pop(); // 删除的最后一项为10
console.log(arr); // [11, 33, 55]

slice():按照条件查找出其中的部分内容

参数:array.slice(a, b),从索引a开始查找到b处(不包含b)

array.slice(a) 第二个参数省略,则一直查找到末尾

array.slice(0)原样输出内容,可以实现数组克隆

array.slice(-a, -b) slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项,

返回值:返回一个新数组,

不改变原数组

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        console.log(arr.slice(2,8)); // [3, 4, 5, 6, 7, 8] 
        console.log(arr.slice(0));  // [1, 2, 3, 4, 5, 6, 7, 8, 9]
        console.log(arr.slice(-2, -1)); // [8]

splice():对数组进行增删改

增加:ary.splice(a, 0, b)从索引a开始删除0项,把m或者更多的内容插入到索引a的前面

返回空数组

// 增加
        let arr1 = [11, 22, 55, 66, 77, 99];
        arr1.splice(3, 0, 'a', 'b');
        console.log(arr1); // [11, 22, 55, 'a', 'b', 66, 77, 99]

修改:ary.splice(a, x, b)从索引n开始删除x个,b替换删除的部分

把原有内容删除掉,然后用新内容替换掉

// 修改
        let arr2 = [11, 22, 55, 66, 77, 99];
        arr2.splice(2, 1, 'x', 'y');
        console.log(arr2); // [11, 22, 'x', 'y', 66, 77, 99]

删除:ary.splice(n, m) 从索引n开始删除m个内容(如果第二个参数省略,则从n删除到末尾)

返回删除的新数组,原有数组改变

// 删除
        let arr3 = [11, 22, 55, 66, 77, 99];
        console.log(arr3.splice(2)); // [55, 66, 77, 99]
        console.log(arr3.splice(1,3)); // [22]

reverse() :反转数组

返回值:倒序后新数组

改变原数组

let arr = [1,3,5,7,9];
        console.log(arr.reverse()); // [9, 7, 5, 3, 1]

join():用指定的分隔符将数组每一项拼接为字符串

参数:指定的分隔符(如果省略该参数,则使用逗号作为分隔符

返回值:拼接好的字符串

不改变原数组

let arr = [1, 2, 3];
        console.log(arr.join()); // 1,2,3
        console.log(arr.join("、")); // 1、2、3

indexOf():检测当前值在数组中第一次出现的位置索引

参数:array.indexOf(a, b) a:查找的元素 b: 字符串中开始检索的位置

返回值:第一次查到的索引,未找到返回 - 1

不改变原数组

let arr = ['a', 'b', 'c', 'd', 'e', 'a', 'f'];
        console.log(arr.indexOf('c')); // 2
        console.log(arr.indexOf('a', 3)); // 5

lastIndexOf()    检测当前值在数组中最后一次出现的位置索引

参数:array.lastIndexOf(a, b) a:查找的元素,b: 字符串中开始检索的位置

返回值:第一次查到的索引,未找到返回 - 1

不改变原数组

let arr = ['a', 'b', 'c', 'd', 'e', 'a', 'f'];
        console.log(arr.lastIndexOf('c')); // 2
        console.log(arr.lastIndexOf('f', 1)); // -1

concat():用于连接两个或多个数组

参数:参数可以是具体的值,也可以是数组对象。可以是任意多个

返回值:返回连接后的新数组

不改变原数组

let arr = ['你'];
        let arr1 = arr.concat('好');
        console.log(arr1); // ["你", "好"]

includes():判断一个数组是否包含一个指定的值

参数:指定的内容

返回值:布尔值

不改变原数组

let arr = ['a', 'b', 'c', 'd'];
        console.log(arr.includes('c')); // true
        console.log(arr.includes(2)); // false

数组的高阶函数

forEach():循环遍历数组每一项

参数:函数 ary.forEach(function (value, index, arr) { })

value:每一项,index:索引,arr: 当前数组(一般不用)

无返回值

不改变原数组

forEach中不能使用continue和break,forEach中不能跳出,只能跳过(return跳过)

let arrN = ['a', 'b', 'c', 'd'];
        let newArr = arrN.forEach(function (value, index, arr) {
            console.log(value, index, arr);   /* 
                                                a 0 (4) ['a', 'b', 'c', 'd']
                                                b 1 (4) ['a', 'b', 'c', 'd']
                                                c 2 (4) ['a', 'b', 'c', 'd']
                                                d 3 (4) ['a', 'b', 'c', 'd']

                                            */
        })

findIndex():当数组中的元素返回 true 时, 该方法会返回符合条件的元素的索引位置,之后的值不会再调用执行函数,

如果没有符合条件的元素返回 -1、原数组不变

var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 89, 100]
        var w = arr1.findIndex(function (v, i) {
            return v > 4
            //  return v < 0  // -1
            //  return v > 90  // 9
        })
        console.log(w); // 4 

find():当数组中的元素在测试条件时返回 true 时, 返回符合条件的元素,之后的值不会再调用执行函数,

如果没有符合条件的元素返回 undefined、原数组不变

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        var a = arr.find(function (v, i) {
            return v > 5
           // return v < 0  // undefined
        })
        console.log(a); // 6

filter():方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素、原数组不变

var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 89, 100]
        var newArr = arr1.filter(function (v, i) {
            return v > 6
        })
        console.log(newArr); // [7, 8, 89, 100]

sort():对数组的元素进行排序(默认是从小到大来排序 并且是根据字符串来排序的)

参数:可选(函数) 规定排序规则 默认排序顺序为按字母升序

返回值:排序后新数组

改变原数组

sort在不传递参数情况下,只能处理10以内(个位数)数字排序

let arr = [32, 44, 23, 54, 90, 12, 9];
        arr.sort(function (a, b) {        // return a-b; 结果[9, 12, 23, 32, 44, 54, 90]
            return b - a;
        })   // 结果[90, 54, 44, 32, 23, 12, 9]   
        console.log(arr);

map():该方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值、原数组不变

var arr = [10, 2, 3, 5, 70, 60, 100];
        var answer = arr.map(function (v, i) {
            return v + 100;
        })
        console.log(answer); // [110,102,103,105,170,160,200]

flat():数组扁平化

参数:(默认不填、数值是1),即展开一层数组,如果是多层,参数可以传进 Infinity,代表不论多少层都要展开

// 数组扁平化
        var arr = [1,2,[3,6,[5,7]]];
        // Infinity 无穷的
        var answer2 = arr.flat(Infinity);
        // var answer2 = arr.flat(2);
        console.log(arr.flat(1),arr.flat(2));
        console.log(answer2); // [1, 2, 3, 6, 5, 7]

some():对数组每一项进行判断,如果有一个元素满足条件,则返回true , 并停止遍历

如果没有满足条件的元素,则返回false,原数组不变

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        var c = arr.some(function (v, i) {
            return v > 8
        })
        console.log(c); // true

every():对数组中每一项进行判断,若每一项都返回true、则返回true

有一个为false,则返回false,并停止遍历,原数组不变

 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        var b = arr.every(function (v, i) {
            return v % 2 > 0
        })
        console.log(b);  // false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值