数组API

目录

一、改变原数组

(添加)1.arr.push(value) 末尾添加

(添加)2.arr.unshift(value) 首位添加

(删除)3.arr.shift(value) 首位删除

(删除)4.arr.pop(value) 末尾删除

(截取、删除/插入/替换)5.arr.splice(index, howmany, item1, …, itemX)  删除、插入、替换

1.参数为正数

splice()有2个参数时:splice(起始下标,删除个数)

splice()有3个参数或多个时:第二个参数不为0则替换元素

 splice()有3个参数或多个时:第二个参数为0则插入/添加元素

2. 参数为负数

(反转)6.arr.reverse()  倒转数组

(排序)7.arr.sort()  数组 排序

2.自定义数组排序

二、不改变原数组

(连接)1.arr.join("连接符)  连接

(转化)2.arr.toString() 数组转字符串

(合并)3.arr.concat(array1,array2,...array3) 合并数组

(截取)4.arr.slice(start,end) 截取数组

1.参数为正数

参数为负数

(查找)5.arr.indexOf(value,start) 查找数组元素

三、循环

1.arr.forEach(item,index)  循环遍历

2.arr.map(item,index)  返回新数组,通过return输出

3.arr.every(item,index)  全部元素满足条件

4.arr.some(item,index)  部分元素满足条件

5.arr.fliter(item,index) 条件过滤数组

ps:splice和slice的区别



一、改变原数组

(添加)1.arr.push(value) 末尾添加

     //push 末尾添加
    //返回数组新长度
    // let newarr = arr.push(4);
    // console.log(newarr);
    let arr = [1,2,3,4]
    let newArr = arr.push(5);
    console.log("返回数组的新长度:"+newArr);//返回数组的新长度:5
    console.log(arr);//[1, 2, 3, 4, 5]

(添加)2.arr.unshift(value) 首位添加

    //unshift 首位添加
    //返回新的数组长度
    // let newarr = arr.push(4);
    // console.log(newarr);
    let arr = [1,2,3,4]
    let newArr = arr.unshift(0);
    console.log("返回数组的新长度:"+newArr);//返回数组的新长度:5
    console.log(arr);//[0, 1, 2, 3, 4]

(删除)3.arr.shift(value) 首位删除

     //shift 删除第一个元素
    //并返回被删除的元素的值
    //arr.length返回数组新长度
    // let newarr = arr.shift()
    // console.log(newarr,arr);
    let arr = [1,2,3,4];
    let newArr = arr.shift();
    console.log("返回数组的新长度:"+arr.length);//返回数组的新长度:3
    console.log("返回被删除的元素:"+newArr);//返回被删除的元素:1
    console.log(arr);//[2, 3, 4]

(删除)4.arr.pop(value) 末尾删除

    //pop 删除最后一个元素
    //并返回被删除的元素的值
    //arr.length返回数组新长度
    let arr = [1,2,3,4];
    let newArr = arr.pop();
    console.log("返回数组的新长度:"+arr.length);//返回数组的新长度:3
    console.log("返回被删除的元素:"+newArr);//返回被删除的元素:4
    console.log(arr);//[1,2, 3]

(截取、删除/插入/替换)5.arr.splice(index, howmany, item1, …, itemX)  删除、插入、替换

下标,删除个数,插入元素

1.参数为正数

splice()只有1个参数时:包含该下标元素,删除后面所有的元素

let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(3)
//包含该下标元素,删除后面所有的
console.log(arr)  //[1, 2, 3]
console.log(arr1)  //[4, 5, 6, 7, 8, 9]

splice()有2个参数时:splice(起始下标,删除个数)

 let arr = [1,2,3,4,5,6,7,8,9]
 let arr1 = arr.splice(1,3)
 //(起始下标1,删除3个)
 console.log(arr)  //[1, 5, 6, 7, 8, 9]
 console.log(arr1)  //[2, 3, 4]

splice()有3个参数或多个时:第二个参数不为0则替换元素

 let arr = [1,2,3,4,5,6,7,8,9]
 let arr1 = arr.splice(1,5,20)
  //(起始下标1,删除5个,20插入到起始下标的位置)
 console.log(arr)  //[1, 20, 7, 8, 9]
 console.log(arr1)  //[2, 3, 4, 5, 6]

 splice()有3个参数或多个时:第二个参数为0则插入/添加元素

 let arr = [1,2,3,4,5,6,7,8,9]
 arr.splice(1,0,20)
  //(起始下标1,20插入到起始下标的位置)
 console.log(arr)  //[1,20,2,3,4,5,6,7,8,9]

2. 参数为负数

如果第1个参数为负数,从右到左开始删除:

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

如果第2个参数为负数,视为0:

全删

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

(反转)6.arr.reverse()  倒转数组


    //reverse 倒转数组
    let arr = [1,2,3,4];
    arr.reverse();
    console.log(arr);//[4, 3, 2, 1]

(排序)7.arr.sort()  数组 排序

sort() 方法用原地算法对数组的元素进行排序,并返回数组。
默认排序顺序是在将元素转换为字符串,然后比较它们的码点(在字符集中的序号)

1.排序

/* sort() 方法用原地算法对数组的元素进行排序,并返回数组。
默认排序顺序是在将元素转换为字符串,然后比较它们的码点(在字符集中的序号) */
        function demoSort() {
            var arr = ['ni', 'mei', 'zhen', 'bang'];
            arr.sort();
            console.log(arr);//['bang', 'mei', 'ni', 'zhen']
 
            var arr2 = [1, 30, 4, 21, 100000];
            arr2.sort();
            console.log(arr2);//[1,100000,21,30,4]
        }

2.自定义数组排序

通过数组大小排序

  /* 自定义排序规则 */
        function demoSort2() {
            var arr = [1, 30, 4, 21, 100000];
            arr.sort(
                function (a, b) {
                    // console.log(a,b);
                    return a - b
                }
            );
            console.log(arr);//[1, 4, 21, 30, 100000]
        }

 3.自定义数组字符串排序

通过字符串长度排序

 function demoSort3() {
            var arr = [
                "胆小怕事受气包豹子头林冲",
                "天王晁盖",
                "呼保义宋江",
                "blackwind KuiLi",
                "大阴人智多星吴用",
            ];
            arr.sort(
                function (a, b) {
                    return b.length - a.length
                }
            );
            console.log(arr);//['blackwind KuiLi', '胆小怕事受气包豹子头林冲', '大阴人智多星吴用', '呼保义宋江', '天王晁盖']
        }
        demoSort3()

二、不改变原数组

(连接)1.arr.join("连接符)  连接


/* join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。
如果数组只有一个项目,那么将返回该项目而不使用分隔符。 */
        function demoJoin() {
            const arr = ['Fire', 'Air', 'Water'];
 
            console.log(arr.join());
            // expected output: "Fire,Air,Water"
 
            console.log(arr.join(''));
            // expected output: "FireAirWater"
 
            console.log(arr.join('-'));
            // expected output: "Fire-Air-Water"
        }

(转化)2.arr.toString() 数组转字符串

toString()方法:  常用,只是toString()无法转换null和undefined

    //不改变旧数组
    // //toString 数组转字符串
    let arr = [1,2,3,4];
    let str =arr.toString();
    console.log(str);//4, 3, 2, 1

(合并)3.arr.concat(array1,array2,...array3) 合并数组

let a = [1,2,3];
a.concat(4,5); // [1,2,3,4,5]
a.concat([4,5]); // [1,2,3,4,5]
a.concat(4, [5, [6, 7]]); // [1,2,3,4,5,[6,7]]

(截取)4.arr.slice(start,end) 截取数组


1.参数为正数

slice()只有1个参数时:

let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(3)
//包含该下标元素,截取后面所有的元素
console.log(arr)  // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1)  // [4, 5, 6, 7, 8, 9]

slice()有2个参数时:

slice(start,end-1)包含的起始下标,不包含的结束下标

 let arr = [1,2,3,4,5,6,7,8,9]
 let arr1 = arr.slice(3,6)
 //(包含的起始下标,不包含的结束下标(index-1))
 console.log(arr)  // [1, 2, 3, 4, 5, 6, 7, 8, 9]
 console.log(arr1)  // [4, 5, 6]

参数为负数

let arr = [1,2,3,4,5,6,7,8,9]
 let arr1 = arr.slice(3,-2)
 //(从左开始截取下标,负数从右开始截取下标)
 console.log(arr)  // [1, 2, 3, 4, 5, 6, 7, 8, 9]
 console.log(arr1)  // [4, 5, 6, 7]
 let arr = [1,2,3,4,5,6,7,8,9]
 let arr1 = arr.slice(-4,-2)
 //(负数从右开始截取下标,负数从右开始截取下标)
 console.log(arr)  // [1, 2, 3, 4, 5, 6, 7, 8, 9]
 console.log(arr1)  // [6, 7]

如果第二个负数参数的位置超过第一个参数的位置,则返回 [ ]

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

slice()操作字符串时,参数情况和返回结果和数组是一样的

 let arr = 'abcdefghijklmn'
 let arr1 = arr.slice(2,4)
 console.log(arr)  // abcdefghijklmn
 console.log(arr1)  // cd

(查找)5.arr.indexOf(value,start) 查找数组元素

返回 item 的第一次出现的索引位置,如果在数组中没找到指定元素则返回 -1

如果你想查找字符串最后出现的位置,请使用 lastIndexOf() 方法

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");//2
---------------------------从4开始查找,默认不填为从0开始
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4);//6

三、循环 (第一个入参function(item,index))

1.arr.forEach(item,index)  循环遍历(无返回值)

无返回值:返回值都为undefined

arr.forEach数组元素,下标

var arr = [1, 2, 3, 4, 5];
arr.forEach(function(item, index){
  console.log(item, index);
});

2.arr.map(item,index)  返回新数组,通过return输出

arr.map数组元素,下标

      /* map 将原数组映射为一个新数组 (原数组中的每个元素根据您提供的映射规则(函数表示)
生成一个新元素并丢入新数组) */
        function demoMap() {
            var arr = [1, 4, 9, 16];
 
            var mappedArr = arr.map(
                // 定义映射规则
                // 原数组中的元素x进去 一个改造后的新值出来(进入新数组mappedArr)
                function (element, index) {
                    var newValue = Math.sqrt(element)
                    console.log(index, element, newValue);
 
                    // 返出的新值进入新数组mappedArr
                    return newValue
                }
            );
 
            console.log(mappedArr);//[1,2,3,4]
            console.log(arr);//[1 4 9 16]
        }
        // demoMap()

3.arr.every(item,index)  全部元素满足条件

返回boolean值

function demoEvery() {   
            var arr = [2, 4, 6, 8, 10,13];
 
            /* 回答【arr中是否人人都是偶数】 */
            var allEven = arr.every(
                // 检查规则函数
                // 如果被测元素element是偶数,则返回true否则返回false
                // 只要有一个元素通过测试 则some的整体结果就是true
                function (element, index) {
                    var isEven = element % 2 === 0
                    console.log(index, element, isEven);
                    return isEven
                }
            );
 
            console.log(allEven);//false
        }

4.arr.some(item,index)  部分元素满足条件

返回boolean值

至少一个满足条件

 function demoSome() {
            var arr = [1, 2, 3, 4, 5];
 
            /* 回答【arr中是否至少有一个偶数】 */
            var hasEven = arr.some(
                // 检查规则函数
                // 如果被测元素element是偶数,则返回true否则返回false
                // 只要有一个元素通过测试 则some的整体结果就是true
                function (element, index) {
                    var isEven = element % 2 === 0
                    console.log(index, element, isEven);
                    return isEven
                }
            );
 
            console.log(hasEven);//true
        }

5.arr.fliter(item,index) 条件过滤数组(返回值为:true/false)

 /* filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。  */
        function demoFilter() {
            var arr = 
           ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
 
            var filteredArr = arr.filter(
                function (element, index) {
                    var isVeryLong = element.length > 6
                    console.log(index, element, isVeryLong);
 
                    // 根据长度是否大于6 return true/false
                    /*如果return true 则当前element能通过过滤
                      进入过滤后的数组filteredArr*/
                    return isVeryLong
                }
            );
 
            console.log(filteredArr);//["exuberant", "destruction", "present"]
            console.log(arr);
        }
        // demoFilter()

ps:spliceslice的区别

相同:都可以截取数组

不同:splice返回数组 splice(开始下标,截取长度,插入\删除的值)

           slice返回数组 slice(开始,结束-1) 含头不含尾  不以下标为开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: JavaScript提供了许多数组API方法来方便地操作数组。其中一些常用的方法包括: 1. filter()方法:该方法创建一个新数组,其中包含满足指定条件的所有元素。可以使用filter()方法来过滤数组中的元素。在给定的代码示例中,使用了一个for循环来过滤出名字中包含"John"的员工,并将它们添加到一个新的数组中。\[1\] 2. forEach()方法:该方法对数组中的每个元素执行提供的回调函数。回调函数接受三个参数:当前元素的值、当前元素的索引和数组本身。forEach()方法没有返回值,它只是对每个元素执行回调函数。在给定的代码示例中,使用forEach()方法遍历数组并打印每个元素的值、索引和数组本身。\[2\] 3. join()方法:该方法将数组的所有元素连接成一个字符串,并返回该字符串。默认情况下,元素之间使用逗号分隔。在给定的代码示例中,使用join()方法将数组中的元素连接成一个字符串,并将结果打印出来。\[3\] 这些是JavaScript中一些常用的数组API方法,它们可以帮助我们更方便地操作和处理数组。 #### 引用[.reference_title] - *1* [JavaScript 数组filter方法完整介绍](https://blog.csdn.net/allway2/article/details/124954994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JS数组API大全(持续更新)](https://blog.csdn.net/BBBBobo/article/details/121869585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值