JS 数组对象去重排序等一些常用方法整理

本贴最后更新于 2020 天前,其中的信息可能已经时移俗易

1、数组对象去重

1. 数组去重,数组中元素为数字或者字符串

1. 单个数组去重

//1. function unique(arr) { return [...new Set(arr)] } //2. function unique(arr) { return Array.from(new Set(arr)) } //3. function unique(arr) { var arrs = []; for (var i = 0; i < arr.length; i++) { if (arrs.indexOf(arr[i]) == -1) { arrs.push(arr[i]) } } return arrs; }

2. 两个数组合并去重

//1. function unique(arr1, arr2) { return Array.from(new Set([...arr1, ...arr2])) } //2. function unique(a, b) { let arr = a.concat(b) arr = arr.sort(function (a, b) { return a - b; }); let result = [arr[0]] for (let i = 1, len = arr.length; i < len; i++) { arr[i] !== arr[i - 1] && result.push(arr[i]) } return result }

2. 数组对象去重,数组中元素为对象,去除相同 key 值的对象

//1. function unique(arr, keyName) { let obj = {}; return arr.reduce((cur, next) => { obj[next[keyName]] ? "" : obj[next[keyName]] = true && cur.push(next); return cur; }, []) } //2. function unique(oldArr,keyName) { var allArr = []; for (var i = 0; i < oldArr.length; i++) { var flag = true; for (var j = 0; j < allArr.length; j++) { if (oldArr[i][keyName] == allArr[j][keyName]) { flag = false; }; }; if (flag) { allArr.push(oldArr[i]); }; }; return allArr }

2、判断各种数据类型及无效值

1. 判断是否是一个数组

function isArray(arr){ return Object.prototype.toString.call(arr) ==='[object Array]'; //return arr.constructor === Array; } isArray([1,2,3]) //true

2. 判断是否是一个函数

function isFunction(fn) { return Object.prototype.toString.call(fn) ==='[object Function]'; //return fn.constructor === Function; //return fn instanceof Function; //return typeof fn === "function"; }

3. 判断是否是一个字符串

function isString(str) { retrun Object.prototype.toString.call(str) ==='[object String]'; //return str.constructor === String; //return typeof str === "string"; }

4. 判断是否是一个对象

function isObject(obj) { retrun Object.prototype.toString.call(obj) ==='[object Object]'; //return obj.constructor === Object; //return obj instanceof Object; //return typeof obj === "object"; }

5. 判断是否是一个数字

function isNumber(num) { retrun Object.prototype.toString.call(num) ==='[object Number]'; //return num.constructor === Number; //return typeof num=== "number"; }

6. 判断是否是一个时间对象

function isDate(date) { retrun Object.prototype.toString.call(date) === "[object Date]"; //return date.constructor === Date; }

7. 判断是否是一个布尔值

function isBoolean(bool) { retrun Object.prototype.toString.call(bool) ==='[object Boolean]'; //return bool.constructor === Boolean; //return typeof bool=== "boolean"; }

8. 判断是否是一个空、无效的值(null、undefined、""、[]、{}、NaN)

function isVoid(obj) { if (obj == null || obj == undefined || obj == "") { return true } else if (Object.prototype.toString.call(obj) === '[object Array]' && obj.length === 0) { return true } else if (Object.prototype.toString.call(obj) === '[object Object]' && Object.keys(obj).length === 0) { return true }else if(isNaN(obj)){ return true } return false }
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1280 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...