• JavaScript 练手小技巧:数组的filter方法


    filter 的中文含义“滤镜,过滤”。

    所以,数组的 filter 的方法,简单来说就是过滤数组的元素,保留自己需要的,去掉不需要的。

    基础用法:

    filter 方法需要回调函数。回调函数需要三个参数:元素值,索引,数组本身。其中,元素值参数是必须的,其他两个是可选的。

    1. arr.filter(function(v,i,arr){
    2. console.info(v); // 元素值
    3. console.info(i); // 索引
    4. console.info(arr); // 就是 arr 数组本身的引用
    5. });

    回调函数里的 return 语句的返回 true 会保留当前元素值;返回 false 会去掉当前元素值。

    但是,filter 方法不会破坏原数组。所以,要获得结果必须使用另一个数组存储。

    这里列举一些经典用法:

    1. 数组去重

    利用数组的 indexOf 方法,查找元素在数组里的位置。如果位置跟索引一样,说明是唯一元素,就要保留这个值。

    1. // 数组去重
    2. let arr = [10,230,230,10,10,324,43,657,87];
    3. arr = arr.filter((v,i)=>{
    4. return arr.indexOf(v) == i ;
    5. });
    6. console.info( arr ); // [10, 230, 324, 43, 657, 87]

    2. 筛选指定元素

    这种用法应该是 filter 方法的最初始的用法。也是使用最多的方法。

    1. // 筛选元素:筛选偶数
    2. let arr = [10,230,230,10,10,324,43,657,87];
    3. arr = arr.filter((v,i)=>{
    4. return v%2==0
    5. });
    6. console.info( arr ); //  [10, 230, 230, 10, 10, 324]

    3. 筛选元素:元素是对象

    1. // 筛选对象:赛选数组中 age 大于等于 18 的对象。
    2. let arr = [
    3. {name:"lily",age:16},
    4. {name:"toy",age:17},
    5. {name:"jerry",age:20},
    6. {name:"kate",age:19},
    7. ];
    8. arr = arr.filter(v=>{
    9. return v.age >= 18;
    10. });
    11. console.info( arr );
    12. // {name: 'jerry', age: 20}
    13. // {name: 'kate', age: 19

    4. 筛选 DOM:查找兄弟标签

    html:

    1. <ul id="box">
    2. <li>标签 1li>
    3. <li>标签 2li>
    4. <li id="li3">标签 3li>
    5. <li>标签 4li>
    6. ul>

    JS:

    1. // 找兄弟标签
    2. let li3 = document.getElementById("li3");
    3. let box = document.getElementById("box");
    4. let child = box.children;
    5. let siblings = [];
    6. for(let i=0; i<=child.length-1 ;i++){
    7. siblings.push(child[i]);
    8. }
    9. siblings = siblings.filter(v=>{
    10. return v != li3 ;
    11. });
    12. console.info(siblings);

    当然,filter 还有更多用法,等着大家去发现。

  • 相关阅读:
    别再张口闭口高并发海量数据了,Spring这些东西都会了吗?
    Table ‘mysql.proc‘ doesn‘t exist
    前端开发工具有哪些?17款前端工程师必备工具推荐!
    Linux服务器线上优化
    Vue3创建项目(四)main.js配置,避坑指南
    实验5 8254定时/计数器应用实验【微机原理】【实验】
    模拟考试题库答题流量主小程序开发
    2022年 安全智能 分析的挑战 模型交付 学习笔记
    KingbaseES参数track_activity_query_size介绍
    Java入门教程(1)——Java概述
  • 原文地址:https://blog.csdn.net/weixin_42703239/article/details/126304808