• Vue操作数组的几种常用方法(map、filter、forEach、find 和 findIndex 、some 和 every)


    一、map方法 (返回一个新的数组 新数组中的元素是经过map函数内部代码块处理过的数据)


    代码示例:

    1. testMap() {
    2.         let array = [1, 2, 3, 4];
    3.         let newArray = array.map(item=>{
    4.         return item += 1;
    5.         });
    6.         console.log(newArray);
    7.     }

    结果:

    在这里插入图片描述
     

    注意点:map函数内部必须要有return 将数据返回 否则默认返回 undefined
    如果不加 return 如下:
    代码示例:

    1. testMap() {
    2.         let array = [1, 2, 3, 4];
    3.         let newArray = array.map(item=>{
    4.         item += 1;
    5.         });
    6.         console.log(newArray);
    7.     }

    结果:

    在这里插入图片描述
    还有种省略写法 箭头函数省略return (不推荐这种写法)
    代码示例:

    1. testMap() {
    2.         let array = [1, 2, 3, 4];
    3.         let newArray = array.map(item=> item += 1 );
    4.         console.log(newArray);
    5.     }

    结果:

    在这里插入图片描述

     可以看到和第一种带return的相比 item=>{return item += 1; }
    少了大括号 和 return 即 item=> item += 1
    不推荐这种省略写法

    二、filter方法 (返回 符合过滤条件的元素组成的新数组)


    代码示例:

    1. testFilter() {
    2.         let array = [1, 2, 3, 4];
    3.         let newArray = array.filter(item=>{
    4.         return item > 2 ;
    5.         });
    6.         console.log(newArray);

    结果:

    在这里插入图片描述

     类似于map函数 也需要有返回值 否则会返回一个空数组
    例:

    1. testFilter() {
    2. let array = [1, 2, 3, 4];
    3. let newArray = array.filter(item=>{
    4. item > 2 ;
    5. });
    6. console.log(newArray);
    7. }

    结果:
    在这里插入图片描述

    三、forEach方法 (无返回值 遍历数组的每一个元素 适用于不处理数组下标或者不需要使用break的情况)

    代码示例:

    结果:
    在这里插入图片描述

    注意 改变item值 并不会改变原数组中的元素值

    例如:

    1. testForEach() {
    2. let array = [1, 2, 3, 4];
    3. array.forEach(item => {
    4. item = item +1;
    5. });
    6. console.log(array);
    7. }

    结果:
    在这里插入图片描述

    并且forEach函数内 不支持 continue 和 break 操作 (普通for 循环支持这两个操作)

    直接语法校验不通过

    在这里插入图片描述
    在这里插入图片描述

     如果想在forEach中使用 continue 操作 可以 使用return 即可 (注意这里的return 功能和 continue一样 是结束本次循环开始下一次循环)

    1. testForEach() {
    2. let array = [1, 2, 3, 4];
    3. let newArray = [];
    4. array.forEach(item => {
    5. if(item ===2 ){
    6. return;
    7. }
    8. newArray.push(item);
    9. });
    10. console.log(newArray);
    11. }

    结果:
    在这里插入图片描述

    四、find方法 (返回符合条件的第一个元素 如果没有符合条件的 返回undefined) findIndex方法(返回符合条件的第一个元素位置 如果没有符合条件的返回 -1) 

    1. testFindAndFindIndex() {
    2. let array = [1, 2, 3, 4];
    3. let item1 = array.find(item=> item > 3);
    4. console.log(item1);
    5. let index1 = array.findIndex(item=> item > 3);
    6. console.log(index1);
    7. let item2 = array.find(item=> item > 4);
    8. console.log(item2);
    9. let index2 = array.findIndex(item=> item > 4);
    10. console.log(index2);
    11. }

    结果:
    在这里插入图片描述

    五、some方法 (如果有任何一个符合条件的元素 返回true 否则返回fasle) every方法(所有元素都符合条件才返回true 否则返回false)

    代码示例:

    1. testSomeAndEvery() {
    2. let array = [1, 2, 3, 4];
    3. let flagSome = array.some(item=> item > 3);
    4. console.log(flagSome);
    5. let indexEvery = array.every(item=> item > 3);
    6. console.log(indexEvery);
    7. }

    结果:
    在这里插入图片描述

    六、includes方法

    参数:数值 -------- 返回值:true/false
    includes()方法------是查看数组中是否存在这个元素,存在就返回true,不存在就返回false

    1. const obj1 = { a: 1 };
    2. const obj2 = { b: 2 };
    3. const obj3 = { a:5 , c: 3 };
    4. //对象合并,把后面对像合并到第一个对象,对象里相同的属性会覆盖
    5. Object.assign(obj1, obj2, obj3);
    6. console.log(obj1); // { a: 5, b: 2 , c:3}

    七、Array.from()方法

    作用:将一个类数组对象或者可遍历对象转换成一个真正的数组
    类数组对象:最基本的要求就是具体length属性的对象;

    类数组对象中必须具有length属性,用于指定数组的长度。如果没有length属性,那么类数组转换后的数组是一个空数组;
    类数组对象的属性名必须为数值型或者是字符串型的数字

    Array.from还可以接收第二个参数,作用类似于数组的map方法,用来对数组中每个元素进行处理,然后再将处理后的值放入返回一个新的数组
    let arr = [2,4,5,6,1,7];
    let set = new Set(arr);
    console.log(Array.from(set,item=>item+1));// [3,5,6,7,2,8]

    将Set结构的数据转换为真正的数组
    let arr = [2,4,5,6,1,7];
    let set = new Set(arr);
    console.log(Array.from(set));// [2,4,5,6,1,7]

    将字符串转换为数组
    let str = “hello world!”
    console.log(Array.from(str));//[“h”, “e”, “l”, “l”, “o”, " ", “w”, “o”, “r”, “l”, “d”, “!”]

    函数可接受3个参数(后两个参数可以没有):

    第一个表示将被转换的可迭代对象(如果只有一个参数就是把形参转变成数组)

    第二个是回调函数,将对每个数组元素应用该回调函数,然后返回新的值到新数组,

    第三个是回调函数内this的指向。

    1. let arr = [1, 2, 3];
    2. let obj = {
    3. double(n) {
    4. return n * 2;
    5. }
    6. }
    7. console.log(Array.from(arr, function (n){
    8. return this.double(n);
    9. }, obj)); // [2, 4, 6]
    1. //拿到选中的去重
    2. hasMulitIds = Array.from(new Set(hasMulitIds))

    关注微信公众号【码农园区】,获取多个项目源码,以及各大厂学习面试资源

  • 相关阅读:
    23个react常见问题
    JavaDemo——设置控制台输出字符颜色和格式
    【定制项目】【M14 监测预警平台】百度地图区域绘制(时间轴)/柱状图/仪表图 - 关键技术 python flask + echarts
    高版本transformers-4.24中的坑
    一篇案例读懂国央企如何实现数字化管控
    LeetCode //C - 79. Word Search
    数据结构之算法
    BTC价格预测:灰度突如其来的胜利是否会打破“九月魔咒”?
    【图像融合】基于RP、CVT、DTCWT、NSCT-SR+DWT-SR+拉普拉斯金字塔算法-SR等实现MRT图像融合附matlab源码
    Vue+ElementUI实现动态树和表格数据的分页模糊查询
  • 原文地址:https://blog.csdn.net/lwzhang1101/article/details/126491056