JS---数组

一、什么是数组

1) 数组是值的有序集合。

2) 每个值叫做一个元素。

3) 每个元素在数组中有一个位置, 以数字表示,称为索引 (有时也称为下标)。

4) 数组的元素可以是任何类型。

5) 数组索引从 0 开始,数组最大能容纳 4294967295 个元素。

二、数组方法

2.1常用方法

2.2.1原数组改变

表达式作用参数返回值

Pop()

向数组的尾部添加内容

可以是多项新数组的长度

Push()

向数组的尾部删除内容

被删除的那行

Shift()

向数组的头部删除内容

被删除的那行

unshift()

向数组的头部添加内容

可以是多项新数组的长度

reverse()

倒叙排列

倒叙后的新数组

sort()

排序

有、无           默认:升序 

多位数值排序,必须传参,否则会乱

排序后的新数组

splice()

新增到开始索引的前面

arr.splice(开始的索引,删除的个数,新增的内容(多个))

空数组

splice()删除

arr.splice(开始的索引,删除的个数)

删除的数组内容,存放到数组里

splice()修改(先删除,后新增,并且是新增到开始索引的前面)

arr.splice(开始的索引,删除的个数,新增的内容(多个));

删除后的内容,放到一个数组里

fill()

填充

填充值  不写值 undefined

填充后的新数组

示例代码:
1.Pop()
var colors = ['red', 'pink'];
var res = colors.pop();
// 原数组
console.log(colors);//['red']
// 返回值
console.log(res);//'pink'
2.Push()
var colors = ['red', 'pink'];
var res = colors.push('blue');
// 原数组
console.log(colors);//['red', 'pink', 'blue']
// 返回值
console.log(res);//3
3.Shift()
var colors = ['red', 'pink'];
var res = colors.shift();
// 原数组
console.log(colors);//['pink']
// 返回值
console.log(res);//red
4.unshift()
var colors = ['red', 'pink'];
var res = colors.unshift('blue', 'green');
// 原数组
console.log(colors);//['blue', 'green', 'red', 'pink']
// 返回值
console.log(res);//4
5.reverse()
var ary=[1,2,3];
var res=ary.reverse();
console.log(res);//[3,2,1];
console.log(ary);//[3,2,1];
6.sort()
//----------------------不传参的时候

//=====>10 以内的可以排
var ary=[3,2,1,6,8];
ary.sort();

[1, 2, 3, 6, 8]

//=====> 超出10
 var ary2=[1,21,5,33,26]
 ary2.sort();
 [1, 21, 26, 33, 5];
 
 //---------------------------传参的时候
 var ary2=[1,21,5,33,26]
 ary2.sort(function(a,b){
    return a-b; // 升序
    return b-a; //降序
 })
7.splice()
//增加
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.splice(3, 0, 7, 8, 9);
console.log(nums);//[1, 2, 3, 7, 8, 9, 4, 5, 6] 
console.log(res);// []
//删除
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.splice(0, 2);
console.log(nums);// [3, 4, 5, 6]
console.log(res);// [1,2]
//修改
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.splice(0, 3, 7, 8, 9);
console.log(nums);//[7, 8, 9, 4, 5, 6] 
console.log(res);// [1, 2, 3]
8.fill()
     //arr.fill(内容,开始索引, 结束索引)  含头不含尾
      // arr.fill(内容)  开始和结尾,就是完全替换
      // arr.fill(内容,开始索引)  开始索引到最后
      // arr.fill()  可以有复制

2.2.2原数组未改变

方法名作用参数返回值

slice()

从原有的数组中获取特定的内容

可以有一个或者两个

返回值是一个数组,获取的子数组(新的数组)

concat()

拼接

拼接的内容

拼接后的新数组

toString()

转化为字符串

字符串,用逗号分隔

join()

转换为字符串无/有

字符串 用逗号分隔(无参数,默认)

根据自定义参数拼接(有参数)

indexOf

获取某项在数组中首次出现的索引(也可以用来判断是否包含某项)

n:检测的项

m:从索引m开始检索

-1或者具体的索引值

lastIndexOf()

获取某项在数组中最后出现的索引(也可以用来判断是否包含某项)

n:检测的项

m:从索引m停止检索

-1或者具体的索引值

includes()

检测数组中是否包含某一项具体项布尔值 (true false)

flat()

数组扁平化

无(拍平一层)有(数值、Infinity 表示无限 无穷)

拍平后的数组

 示例代码
1.slice()
//1.如果只有一个参数,slice()会返回该索引到数组末尾的所有元素
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.slice(1);
console.log(nums);//[1, 2, 3, 4, 5, 6]
console.log(res);// [2, 3, 4, 5, 6]

//2.如果有两个参数,slice()返回从开始索引到结束索引对应的所有元素
//但是不包含结束索引nums.slice(n,m),包含n,不包含m
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.slice(1, 5);
console.log(nums);//[1, 2, 3, 4, 5, 6]
console.log(res);// [2, 3, 4, 5]

//3.如果slice()的参数有负值,那么就以数组长度加上这个负数来确定位置,案例如下
//长度为6,slice(-5,-1)就相当于slice(1,5)
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.slice(-5, -1);
console.log(nums);//[1, 2, 3, 4, 5, 6]
console.log(res);// [2, 3, 4, 5]

//4.如果结束位置小于开始位置,则返回空数组
var nums = [1, 2, 3, 4, 5, 6];
var res = nums.slice(-1, -5);
console.log(nums);//[1, 2, 3, 4, 5, 6]
console.log(res);// []
2.concat()
var ary1 = [1, 2, 3];
var ary2 = [4, 5, 6];
var res = ary1.concat(ary2, "快乐", "同学");
console.log(ary1);//[1, 2, 3]
console.log(res);//[1, 2, 3, 4, 5, 6, '快乐', '同学']
3.toString()
var ary1 = [1, { a: 1 }, null, undefined, 3];
var res = ary1.toString();
console.log(ary1);//[1, {a:1},null, undefined, 3]
console.log(res)//1,[object Object],,,3 
4.join()
var ary1 = [1, 2, undefined, 3, { a: 1 }];
var res = ary1.join("|");
console.log(ary1);//[1, 2, undefined, 3, { a: 1 }]
console.log(res)// 1|2||3|[object Object]  
eval(res) //==> eval  执行计算
5.indexOf
作用:检测数组中的某项在数组中(首次indexOf/最后lastIndexOf)出现的位置

    var ary=[1,2,3,4,1,55,1];
    //检测1这个项目在数组ary 中首次出现的位置
    ary.indexOf(1); //0
    //从索引2开始,检测1这个项目在数组中首次出现的位置
    ary.indexOf(1,2); //4
6.lastIndexOf()
 // 检测1这个项目在数组中最后一次出现的索引
    ary.lastIndexOf(1);
    // 检测1这个项目在数组中最后出现的索引,在索引5的位置停止检测
    ary.lastIndexOf(1,5)
    
    //如果此项在数组中没有出现,返回值就是-1
    ary.indexOf(66)===>-1
7.includes()
 var arr = [1, 2, 3];
        var res = arr.includes(100);
        console.log(res); // false
        console.log(arr); // [1, 2, 3]
8.flat()
var arr = [1, 2, [3, 4, ["a", "b", ["A", "B", "C"]]]];
var res = arr.flat(Infinity); //无限次拉平
console.log(res); //[1, 2, 3, 4, "a", "b", "A", "B", "C"]
console.log(arr); //[1, 2, [3, 4, ["a", "b", ["A", "B", "C"]]]]

2.2 迭代数组方法

2.2.1方法总结

方法名作用参数返回值是否修改原数组

foreach()

遍历数组中的每一项,注意return没任何作用

函数 三个参(item,index,arr)undefined
map()

把一个数组可以映射成一个新的数组

函数 三个参(item,index,arr)映射后的新数组(就是return的值)

filter()

过滤 把满足条件(return)的内容都有查找出来

函数 三个参(item,index,arr)过滤后的新数组

find()

查找 把满足条件(return)的内容查找出来,只要第一项

函数 三个参(item,index,arr)查找的那项值 查找不到就是 undefined

findIndex()

查找 把满足条件(return)的内容索引查找出来,只要第一项

函数 三个参(item,index,arr)查找的那项索引值 查找不到就是 -1
some()

数组中有满足条件(return)的那项(有一项满足就可以)  有true 没有false

函数 三个参(item,index,arr)true false
every()

数组中的每一项都要满足条件才是true  否则false

函数 三个参(item,index,arr)true false
reduce()

方向:从左向右循环 正序

作用:一般用于求和

函数 三个参(item,index,arr)求的和

reduceRight()

倒叙循环  从右向左循环

函数 三个参(item,index,arr)返回计算结果

2.2.2示例代码

1.foreach()
// 使用forEach迭代数组,计算数组元素的和

//一个家庭的年龄 过年了  每个人长1岁
//方法1 创建一个新数组
var userAages = [19,21,18,34,32,25,45];
var newUserAges = [];
userAages.forEach(function (item,index,array) {
    newUserAges[index] = item + 1;
})
console.log(newUserAges);
//方法2 直接改变原来数组
var re = userAages.forEach(function (item,index,array) {
    userAages[index] = item + 1;
})
console.log(userAages);
console.log(re);
2.map()
// 有一个数组装着2021年所有人的年龄,2022年以后,每个人的年龄都增加1岁
var allAge = [19,15,2,30,32,43,45];
var age2020 = allAge.map(function (item,index,arr) {
    return item+1;
})
console.log(age2020);
3.filter()
          var arr = [10, 20, 30, 40, 50];
        var res = arr.filter((item, index) => {
          return item > 30;
        });
        console.log(res);// [40, 50]
        console.log(arr);// [10, 20, 30, 40, 50]
4.find()
 var arr = [10, 20, 30, 40, 50];
        var res = arr.find((item, index) => {
            return item > 300;
        });
        console.log(res);// undefined
        console.log(arr);// [10, 20, 30, 40, 50]
5.findIndex()
  var arr = [10, 20, 30, 40, 50];
        var res = arr.findIndex((item, index) => {
            return item > 30;
        });
        console.log(res);// 3
        console.log(arr);// [10, 20, 30, 40, 50]
6.some()

        var arr = [10, 20, 30, 40, 50];
        var res = arr.some((item) => {
            return item > 30;
        });
        console.log(res); // true
        console.log(arr); // [10, 20, 30, 40, 50]
7.every()
        var arr = [10, 20, 30, 40, 50];
        var res = arr.every((item) => {
            return item > 30;
        });
        console.log(res);// false
        console.log(arr);// [10, 20, 30, 40, 50]
8.reduce()
        var arr = [10, 20, 30, 40, 50];
        var resa = arr.reduce((res, item, index) => {
            console.log(res, item, index);
            return res + item;
        });
        console.log(resa);// 150
        console.log(arr);// [10, 20, 30, 40, 50]

        参数可以有两个, 第二个参数是初始值
        var arr = [10, 20, 30, 40, 50];
        var resa = arr.reduce((res, item, index) => {
            console.log(res, item, index);
            return res + item;
        }, 0);
        console.log(resa);// 150
        console.log(arr);// [10, 20, 30, 40, 50]
9.reduceRight()
        var arr = [10, 20, 30, 40, 50];
        var resa = arr.reduceRight((res, item, index) => {
            console.log(res, item, index);
            return res + item;
        }, 0);
        console.log(resa);// 150
        console.log(arr);// [10, 20, 30, 40, 50]

        //8 可以改变原数组 · 9循环  24

三、总结

总结不易,可以奖励小♥♥么?如果对你有所帮助的话!

JavaScript数组有很多内置方法,可以操作和处理数据。以下是JavaScript数组的所有方法列表: 1. `concat()` - 连接两个或多个数组。 2. `copyWithin()` - 在数组内部将一段元素拷贝到另一个位置。 3. `entries()` - 返回一个迭代器对象,可以遍历数组所有的键值对。 4. `every()` - 检查数组中的所有元素是否满足一个条件。 5. `fill()` - 用静态值填充一个数组中的所有元素。 6. `filter()` - 通过指定条件过滤出符合条件的数组元素。 7. `find()` - 返回找到的第一个元素,满足条件。 8. `findIndex()` - 返回目标元素索引,满足条件。 9. `forEach()` - 遍历数组,对每个元素执行指定的操作。 10. `includes()` - 判断数组是否包含指定元素。 11. `indexOf()` - 返回指定元素第一个出现的位置索引。 12. `join()` - 连接数组元素,返回字符串。 13. `keys()` - 返回一个迭代器对象,可以遍历数组的键。 14. `lastIndexOf()` - 返回指定元素最后一次出现的位置索引。 15. `map()` - 遍历数组,对每个元素执行指定的操作,将结果放入新数组。 16. `pop()` - 删除数组最后一个元素。 17. `push()` - 在数组末尾添加一个或多个元素。 18. `reduce()` - 对数组中的每个元素执行指定的操作,累积计算并返回最终结果。 19. `reduceRight()` - 与reduce()方法类似,不过是从右到左遍历数组。 20. `reverse()` - 反转数组元素的顺序。 21. `shift()` - 删除数组的第一个元素。 22. `slice()` - 截取数组元素,返回新数组。 23. `some()` - 检查数组中是否存在至少一个元素满足一个条件。 24. `sort()` - 排序数组元素。 25. `splice()` - 删除、插入或替换数组中的元素。 26. `toString()` - 将数组转换成字符串。 27. `unshift()` - 在数组的开头添加一个或多个元素。 28. `valueOf()` - 返回数组本身。 以上方法中,有些方法会改变原数组,有些方法则不会。需要注意使用时,避免产生错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值