JavaScript中几个常用的工具函数(去重,过滤)

218 阅读2分钟

来了官人~~

前言

工具函数库有很多,各种库也就不必多说了,项目需求中所需要的工具函数基本上也都能从函数库里边找的到,至于为什么我还要自己来写一下工具函数呢,深思熟虑之后总结了以下两个原因:

1,找存在感+实现价值,我总得让我写的东西里边有我自己写的代码吧!【滑稽】

2,工具库工具太多,我难以分辨哪个才是我最需要的(简单来说就是我不会用)【猥琐】

对象数组去重:

对象数组去重,也是最常用的,一般很少有简单的数组去重,这里使用了map类型,不得不说这玩意挺好用

/**
* @descriptiong: 根据数组中某个对象的值去重
* @param {array} arr 去重数组
* @param {string} key 去重对象键名
* @returns {arrary}
*/
function unique(arr,key){
    const map = new Map();
    return arr.filter(item => {
        return !map.has(item[key]) && map.set(item[key],'anything');
    });
}

普通数组去重

用indexof ? 可以,但是看着不够nb

/** * @description: es6数组去重复
 * returns {array}
 */function es6Unique(arr) {  return Array.from(new Set(arr));}

为啥?www.runoob.com/jsref/jsref… 自己去瞅瞅吧

主要还是from(),这玩意不允许相同的元素搞基

不明白没用过就控制台试一下,就知道他的作用了
let obj = new Set(['a','b','c','c'])
let ovjArr = Array.from(obj)

输入框过滤filter

前端检索常用,各种原因,有时候后端并不会提供给你各种接口,对于数据量比较大的表格内容还是需要检索功能的,这里边就用到了本地模糊查询

1.查询指定键名(也就是指定列:比如说我只查询用户名这一列):indexOf方式

/**
* @description 模糊过滤对象数组
* @param {string} filterValue 模糊查询的内容
* @returns {array} 
*/
function filter(filterValue,arr){
    const res = arr.filter(item =>  return item[key].toUpperCase().indexOf(value.toUpperCase()) ! == -1
    return res
}

查询多列的内容咋办?em~自己想

2. 匹配所有模糊查询,这个感觉还是挺香的

/**
* @description 模糊过滤对象数组
* @param {string} value 模糊查询的内容
* @returns {array} 
*/
function filter(value,arr){
    const res = arr.filter(item =>{
        return Object.keys(item).some(key => {
            return String(item[key]).toLowerCase().indexOf(value) > -1
        }
    })
    return res
}

下集预告

对象数组根据指定属性值排序、复杂数组排序、URL中解析参数、用户鉴权

/**
* @description 你以为这是排序吗,就先分享这么多吧,下次分享各种常用的排序,拜拜
* @param {string}  
* @returns {array} 
*/

总结一下吧:

本次分享就两个常用的方法 常用环境下的去重和过滤,有好方法也希望大家分享出来互相学习一下(其实我就想白嫖,你让不让吧)

错别字?别赖我,赖我输入法,