那些精彩的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 相关文章推荐
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
Javascript hasOwnProperty 方法 &amp; in 关键字
Nov 26 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
May 04 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
Nov 30 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
Mar 21 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
react.js使用webpack搭配环境的入门教程
Aug 14 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
JS实现简单贪吃蛇小游戏
Oct 28 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极大的增强功能和性能
2006/10/09 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP基础知识回顾
2012/08/16 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Python如何计算语句执行时间
2019/11/22 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
python xlsxwriter模块的使用
2020/12/24 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
土地租赁意向书
2014/07/30 职场文书
德育标兵事迹材料
2014/08/24 职场文书
运动会通讯稿300字
2015/07/20 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
MySQL为id选择合适的数据类型
2021/06/07 MySQL
Java Spring读取和存储详细操作
2022/08/05 Java/Android