那些精彩的JavaScript代码片段


Posted in Javascript onJanuary 12, 2017

精彩的JavaScript代码片段,分享给大家

1.根据给定的条件在原有的数组上,得到所需要的新数组

var a = [-1, -1, 1, 2, -2, -2, -3, -3, 3, -3];
function f(s, e) {
  var ret = [];
  for (var i in s) { // 根据原有的数组长度进行循环
    ret.push(e(s[i]));
  }
  return ret;
}
f(a, function(n) {
  return n > 0 ? n : 0
}); // 传输一个匿名函数作为逻辑判断

2.比原生type或typeof更详细的类型监测方法

function type(p) {
  /function.(\w*)\(\)/.test(p.constructor); //通过其构造函数来获取对应的类型。
  return RegExp.$1;
}

3.对象或数组的深拷贝,用于解决对象引用时值一改全改的问题。

var copyObject = function(obj) {
  var result = {};
  for (var x in obj) {
    result[x] = typeof obj === "object" ? copyObject(obj[x]) : obj[x]
    //如果拷贝的值仍然是一个对象,那么重复执行当前方法。
  }
  return result;
}

4.通过正则表达式来获取Cookie的值

function getCookie(name) {
  if (name && RegExp("(^| )" + name + "=([^;]*)(;|$)").exec(document.cookie)) return RegExp.$2;
  // (^| ) 不匹配第一个空格。
  // ([^;]*) 只匹配除了;号之外的所有字符。
  // (;|$) 匹配以;号或$为结尾的字符。
}

5.通过移位运算来替代”parseInt”

~~3.14 = > 3;

// ~~ 取整。~取当前数值的反码,~~表示再次取反,也就是得到当前自身(说明,JS中的“位”运算会将数值自动转换为整数)

6.将数值转换为16进制的字符串(常用于表示色彩)

(~~ (Math.random() * (1 << 24))).toString(16)

// ~~ 通过位运算来取整。
// << 左移位。将1的二进制数左移24位。而1<<24 == 2^24(RGB模式下最多可表示的色彩数量)
// toString(16) 将数值转换为16进制的字符串输出。

7.对象方法的兼容性检查

if ('querySelector' in document) {}

8.NodeList || HTMLCollection || Object转换为Array或具有Array的方法

NodeList: 是指通过集合方法获得到的DOM节点列表,例如:document.getElementsByTagNmae,document.forms…等方法。
HTMLCollection: HTML块,它与NodeList很像,但是NodeList只支持数字索引,而HTMLCollection可以支持名称作为索引。
NodeList与HTMLCollection都具有以下类似: 具有数组的外观,但没有数组的方法 、具有length属性、支持索引来读取内容

function makeArray(obj) {
  var rs = [],
    len = obj.length;
  try {
    rs = [].slice.call(obj, 0);
  } catch (e) { //for IE
    for (var i = 0; j = obj[i++];) {
      rs.push(j);
    }
  }
  return rs;
}

9. 正则匹配清除两侧空格

var trim = function(v){
  var patrn = /^\s*(.*?)\s+$/;
  return (patrn.test(v))? RegExp.$1 : '
  null ';
}

10. 时间格式化

function dateFormat(t){    // t 是以秒为单位的值。
  var h = ~~(t/3600),    // t除以3600,取整,得到的就是小时。
    m = ~~(t%3600/60),  // t求余3600,取模,得到的就是去除小时剩下的秒数(分钟 + 秒),再除以60,取整,得到的就是分钟。
    s = ~~(t%3600%60);  // t求余3600,再求余60,剩下的自然就是“秒数”。
 
   return h+'小时'+m+'分'+s+'秒';
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery动画和停止动画实例代码
Mar 01 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
jquery实现拖动效果
Aug 10 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
JavaScript实现星级评分
Jan 12 #Javascript
angular2倒计时组件使用详解
Jan 12 #Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 #Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 #Javascript
js中常用的Math方法总结
Jan 12 #Javascript
Vue数据驱动模拟实现4
Jan 12 #Javascript
移动端点击态处理的三种实现方式
Jan 12 #Javascript
You might like
php中大括号作用介绍
2012/03/22 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
setTimeout学习小结
2017/02/08 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
python zip()函数使用方法解析
2019/10/31 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
教育局长自荐信范文
2013/12/22 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
劳动竞赛口号
2014/06/16 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
师德师风整改措施
2014/10/24 职场文书
2014年教育工作总结
2014/11/26 职场文书
三潭印月的导游词
2015/02/12 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python