揭秘 JavaScript 数组过滤:数据筛选的神奇魔法!

背景

首先标题党一下,吸引大家点进来 哈哈。很久没发文章了,最近终于没这么忙了,抽空到掘金上更新一篇文章吧

事情的缘由是,有天上班的时候在公交车上认识到一个同行的前端同学,我们互相留了联系方式,想着以后可以技术互相学习和分享成果。下车以后我就突然很好奇,对方平常写些怎么样的有意思的代码,有设计过怎么样的精妙的逻辑帮助到日常开发呢??? 因为我们都要站在巨人的肩膀上开发!

在这个背景下,我就想到了掘金想在平台,看看大家日常都是有写出怎么样的代码值得分享的,所以就有这一期的内容,下面是我的分享内容

分享内容

在我们的业务场景上经常出现一个相似的问题,在一个表格中选择若干条数据到另一个表格中,在这个过程中,有时候会出现选中的数据是重复的情况,但是我不希望看到有重复的数据展示出来,所以有下面这个方法的设计过程。

分享下面的需求,简单分析出来其实是通过某个主键来控制,过滤数组。其实逻辑也相对简单

js 复制代码
/**
 * @key key 是 表格中的主键,方便过滤数据 Only
 * @array array 是目标的数组,过滤的对象
 **/
function findDuplicatesByKey(key, array) {
    if (!Array.is(array)) {
        console.log('Target params array it's not Array!!!')
        return [];
    }
    if (typeof key === 'string') {
        console.log('Key it's not String!!!')
        return [];
    }
    // 使用reduce方法来遍历数组并构建一个以key为键,value为值的对象
    const keyMap = array.reduce((map, obj) => {
        const value = obj[key];
        if (!map[value]) {
            map[value] = obj;
        }
        return map;
    }, {});

    // 找到重复的数据
    const duplicates = Object.values(keyMap);
    
    if (duplicates.length < array.length) {
        console.log('存在重复的数据,已经进行过滤');
        // 可以给用户写提示信息
    }

    return duplicates;
}

// 示例用法
const array = [
    { id: "123", name: "Kobe" },
    { id: "123", name: "James" },
    { id: "1234", name: "Durant" }
];
const key = "id";
const filteredArray = findDuplicatesByKey(key, array);
console.log(filteredArray); // 过滤后的数据内容

总结

上面的内容也是简单的分享,谢谢你的时间阅读,内容也是相对浅显。

其实简单的分享旨意是想向评论区的大家学习一下有意思的方法工具,我有个习惯看其他仓库的代码,会首先看仓库中抽象出来的 Util 工具文件夹,这样是最直接看到一个开发者的逻辑抽象能力和编码的能力的,所以大家不妨分享一下自己认为有趣值得分享的内容到评论区,我们一起学习一下吧,再次感谢大家阅读,动动小手点个赞,这对我创作是莫大的帮助,让更多人参与到这个活动里

相关推荐
岳哥i35 分钟前
vue鼠标单机复制文本
javascript
jacGJ1 小时前
记录学习--文件读写
java·前端·学习
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 基于WEB的实验室开放式管理系统的设计与实现为例,包含答辩的问题和答案
前端
幻云20101 小时前
Python深度学习:从筑基到登仙
前端·javascript·vue.js·人工智能·python
DarrenPig1 小时前
【常州工NEC】ROBOCON小白入门之路(二)2026CURC-NEC赛季规划
开源·github·交流·robocon
我即将远走丶或许也能高飞3 小时前
vuex 和 pinia 的学习使用
开发语言·前端·javascript
钟离墨笺3 小时前
Go语言--2go基础-->基本数据类型
开发语言·前端·后端·golang
爱吃泡芙的小白白3 小时前
Vue 3 核心原理与实战:从响应式到企业级应用
前端·javascript·vue.js
卓怡学长4 小时前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
码上成长4 小时前
JavaScript 数组合并性能优化:扩展运算符 vs concat vs 循环 push
开发语言·javascript·ecmascript