那些精彩的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日期转换 时间戳转日期格式
Nov 05 Javascript
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
js实现百度淘宝搜索功能
Feb 17 Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 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
4.与数据库的连接
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
教大家制作简单的php日历
2015/11/17 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python连接MySQL数据库实例分析
2015/05/12 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
护士自我鉴定
2013/10/23 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
合伙协议书范本
2014/04/21 职场文书
政府采购方案
2014/06/12 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
四大名著读书笔记
2015/06/25 职场文书
六年级数学教学反思
2016/02/16 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
Nginx配置https的实现
2021/11/27 Servers