那些精彩的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.Jcrop的头像编辑器
Mar 01 Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
用jquery等比例控制图片宽高的具体实现
Jan 28 Javascript
封装好的javascript前端分页插件pagination
Jan 04 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
简单实现js倒计时功能
Feb 13 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 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的开发框架的现状和展望
2007/03/16 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
php加密解密实用类分享
2014/01/07 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
详解Django之auth模块(用户认证)
2018/04/17 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python+os根据文件名自动生成文本
2019/03/21 Python
python多线程并发实例及其优化
2019/06/27 Python
Python实现图片识别加翻译功能
2019/12/26 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
django使用多个数据库的方法实例
2021/03/04 Python
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
个人求职信范文分享
2014/01/31 职场文书
学生鉴定评语大全
2014/05/05 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
环保守法证明
2015/06/24 职场文书
2015年重阳节主持词
2015/07/04 职场文书
mysql 索引合并的使用
2021/08/30 MySQL