//数组去重1
Array.prototype.removal = function () {var newArr = [];var obj = {};for (var i = 0; i < this.length; i++) {if (!obj[this[i]]) {obj[this[i]] = "abc";newArr.push(this[i]);}}return newArr;
};//数组去重2
function ES6Sort(arr) {var newArr = arr.filter(function (item, index, self) {return self.indexOf(item) === index;});return newArr;
}//数组去重3
Array.prototype.setDuplicateRemoval = function () {return Array.from(new Set(this));
};//数组去重4
Array.prototype.indexOfSort = function () {var newArr = [];for (var i = 0; i < this.length; i++) {var n = this[i];newArr.indexOf(n) === -1 && newArr.push(n);}return newArr;
};//深拷贝
Object.prototype.deepClone = function (target, origin) {var target = target || {};for (var prop in origin) {if (origin.hasOwnProperty(prop)) {if (typeof origin[prop] === "object") {//如果是引用值if (Object.prototype.toString.call(origin[prop]) === "[object Array]") {//如果是数组引用值target[prop] = [];} else {//如果是对象引用值target[prop] = {};}deepClone(target[prop], origin[prop]);} else {//如果是原始值target[prop] = origin[prop];}}}return target;
};//通过JSON实现深拷贝(会忽略掉函数)
function deepclone(target, origin) {target = JSON.parse(JSON.stringify(origin));return target;
}//返回字节长度
Object.prototype.retBytes = function () {var len = this.length;for (var i = 0; i < len; i++) {if (this.charCodeAt(i) >= 255) {len++;}}return len;
};//冒泡排序
Array.prototype.bubSort = function () {var len = this.length,temp;for (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {if (this[i] < this[j]) {[this[i], this[j]] = [this[j], this[i]];}}}return this;
};//快速排序
Array.prototype.quickSort = function () {if (this.length < 2) {return this;}var left = [],right = [],radix = this[0];this.shift();for (var i = 0, len = this.length; i < len; i++) {if (radix > this[i]) {left.push(this[i]);} else {right.push(this[i]);}}return [].concat(left.quickSort(), radix, right.quickSort());
};//选择排序Array.prototype.selectSort = function () {for (var i = 0, len = this.length; i < len - 1; i++) {var index = i;for (var j = i + 1; j < len; j++) {if (this[index] > this[j]) {index = j;}}[this[i], this[index]] = [this[index], this[i]];}return this;
};//二分查找Array.prototype.twoPoints = function (low, high, n) {var center = Math.floor((low + high) / 2);if (this[center] == n) {return center;} else if (this[center] > n) {this.twoPoints(low, center - 1, n);} else if (this[center] < n) {this.twoPoints(center + 1, this.length - 1, n);}
};//斐波那契数列第n位function fibonacci(n) {if (n == 1 || n == 2) {return 1;}return fibonacci(n - 1) + fibonacci(n - 2);
}//n的阶乘function factorial(n) {if (n == 1) {return 1;}return n * factorial(n - 1);
}//速度框架(function () {var requestAnimationFrame =window.requestAnimationFrame ||function (fn) {return setTimeout(fn, 1000 / 60);};var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;function move(ele, attr, targetVal, speed) {var CSSdom = ele.currentStyle || getComputedStyle(ele),startVal = parseFloat(CSSdom[attr]) || 0,targetVal = parseFloat(targetVal),bool = targetVal > startVal,speed = bool ? speed : -speed;function m() {startVal += speed;var ifEnd = bool ? startVal >= targetVal : startVal <= targetVal;ifEnd && (startVal = targetVal);ele.style[attr] = startVal + "px";!ifEnd && requestAnimationFrame(m);}requestAnimationFrame(m);}window.move = move;
})();//碰撞检测
function isCollision(ele1, ele2) {var L1 = ele1.offsetLeft,U1 = ele1.offsetTop,R1 = ele1.offsetLeft + ele1.clientWidth,B1 = ele1.offsetTop + ele1.clientWidth,L2 = ele2.offsetLeft,U2 = ele2.offsetTop,R2 = ele2.offsetLeft + ele2.clientWidth,B2 = ele2.offsetTop + ele2.clientHeight;if (R1 >= L2 && B1 >= U2 && L1 <= R2 && U1 <= B2) {return true;} else {return false;}
}

JS工具函数库(持续更新)相关推荐

  1. 前端常用的 59 个工具类【持续更新】

    #前端常用的 59 个工具类[持续更新] 前言 前端开发有时会处理一部分后台返回的数据,或者根据数据判断做一些处理; 这个时候就非常有必要将一些常用的工具类封装起来; 本文根据常用的一些工具类封装了 ...

  2. lancet: 一个全面、高效、可复用的go语言工具函数库

    Lancet lancet(柳叶刀)是一个全面.高效.可复用的go语言工具函数库. lancet受到了java apache common包和lodash.js的启发. 特性

  3. 前端常用Utils工具函数库合集

    前端常用Utils工具函数库合集 在开发中,我们经常会将一些常用的代码块.功能块进行封装,为的是更好的复用.那么,被抽离出来独立完成功能,通过API或配置项和其他部分交互,便形成了插件. 函数库 Lo ...

  4. JavaScript 自定义工具函数库

    文章目录 自定义工具函数库 函数相关 call()&apply()&bind() call(Fn,obj,.....args) apply(Fn,obj,args) bind(Fn,o ...

  5. 用于业务的精炼js工具函数(浏览器环境)

    js工具函数(浏览器环境) github : github.com/Javison666/- 引用库,后续 $fn 直接当作全局进行使用 import $fn from 'jj-browser-fn' ...

  6. C语言图形函数代码~持续更新中

    下面总结的是一些C语言图形函数代码~持续更新中 画三类圆 #include#include#include#include#includeint main(void) { initgraph(640, ...

  7. 20 个 JS 工具函数助力高效开发

    日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率. 1.校验数据类型 export const typeOf = functio ...

  8. 常用html/css/js学习(会持续更新)

    html5 前端三要素: js 动化(能说会道 会交流) css 美化(妆容) html 结构(身材) html5 超文本标记语言解释型标签语言 运行机制?1) 开发pc - 部署pc - pc-浏览 ...

  9. 青龙面板搭建教程安装,使用拉库持续更新,干什么用,我不说?

    青龙面板火了,小伙伴简简单单的部署之后就可以获得薅羊毛的快感,还有小商品到货的成就感,但是这一切的收获前提,就是你必须拥有自己的服务器并部署了自己的青龙. 一.1.购买服务器 现在的云服务器真的是很便 ...

最新文章

  1. find、sed、awk、grep命令总结
  2. 【Linux开发】linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
  3. [剑指offer] 27. 字符串的排列
  4. IntelliJ idea 12的初次约会
  5. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
  6. 一次搞定各种数据库SQL执行计划
  7. Boost笔记--Thread--Ubuntu上初次使用时遇到的问题
  8. WPS2019 电子表格/Excel文件保护密码忘记了?
  9. RS232 DB9 公头 母头 串口引脚定义
  10. iOS开发——性能优化的25个建议和技巧
  11. python中if brthon环境安装包_python-debian/test.deb.uu at master · romlok/python-debian · GitHub...
  12. 通达+oa+php+文件+乱,通达OA文件上传+文件包含get shell复现
  13. 智慧体检中心管理系统降低管理成本提高管理效率
  14. cad卸载不干净_BarTender卸载卸不干净的解决技巧
  15. Golang 字符串
  16. 广州车展开幕:超定律智能纯电SUV埃安Y全球首发
  17. windows下用Mingw64编译qtw3d
  18. 一键搭建Centos开发环境
  19. 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc
  20. 如何成为小型咖啡店的优秀老板?需具备这6个特质

热门文章

  1. jsdelivr cdn报错无法访问的解决方法
  2. 变压器输出整流的蓄能电容选取方法
  3. 规划进度管理-规划过程组
  4. 4·26世界知识产权日,Adobe助力认知和解决知识产权的那些事
  5. VUE2.0 插入腾讯地图(有经纬度和搜索功能以及标记’)
  6. [转]物联网之父凯文· 艾希顿演讲PPT:物联网与智慧城市
  7. 怎样提高服务效率和客户满意度,降低服务成本?
  8. 服务器如何设置多用户登录?Windows服务器多界面设置方法
  9. Vue中extend基本用法
  10. 【文本挖掘】业绩预告原因·其二