那些精彩的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之一(对象的组成)
Jun 11 Javascript
javascript 主动派发事件总结
Aug 09 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
jquery常用方法及使用示例汇总
Nov 08 Javascript
js自定义回调函数
Dec 13 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
Jan 19 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
JavaScript输入框字数实时统计更新
Jun 17 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 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和ACCESS写聊天室(七)
2006/10/09 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
python链接Oracle数据库的方法
2015/06/28 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python的变量与赋值详细分析
2017/11/08 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
python3.6实现学生信息管理系统
2019/02/21 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
2014年教师培训的自我评价
2014/01/03 职场文书
社区交通安全实施方案
2014/03/22 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
教师个人年终总结
2015/02/11 职场文书
八一建军节主持词
2015/07/01 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
python中的sys模块和os模块
2022/03/20 Python