小昱个人博客
欢迎来到小昱的世界

勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
对JS基础对象的扩展
  • 首页 > >
  • 作者:小昱
  • 2017年9月7日 9:52 星期四
  • 浏览:160
  • 字号:
  • 评论:1
  • 一、数组

    1. 删除数组中的某一项

    Array.prototype.remove = function(val) {
      var index = this.indexOf(val)
      if (index > -1) {
        this.splice(index, 1)
      }
    }
    
    var emp = ['abs','dsf','sdf','fd']
    emp.remove('dsf');

    参考: js删除数组里的某个元素

    2. 判断数组中是否有属于某个字串的字串项

    Array.prototype.hasSubstring = function(str) {
      for (substr of this) {
        if(str.indexOf(substr) > -1)
          return true
      }
      return false
    }
    
    let str = "My blog name is xiaoyulive";
    let arr1 = ['aa', 'bb']
    let arr2 = ['aa', 'b']
    console.log(arr1.hasSubstring(str)) // false
    console.log(arr2.hasSubstring(str)) // true

    3. 如果浏览器不支持forEach循环,可以自定义实现:

    if (!Array.prototype.forEach) {
    	Array.prototype.forEach = function (fn, thisObj) {
    		var scope = thisObj || window;
    		for (var i = 0, j = this.length; i < j; ++i) {
    			fn.call(scope, this[i], i, this);
    		}
    	};
    }
    
    let arr = ['a','b','c','d','e']
    arr.forEach(function (e, i, t) {
      console.log(e, i, t)
      console.log(this)
    }, arr)

    参考: 深入理解JavaScript系列(32):设计模式之观察者模式

    4. 如果浏览器不支持filter,可以自定义实现:

    if (!Array.prototype.filter) {
    	Array.prototype.filter = function (fn, thisObj) {
    		var scope = thisObj || window;
    		var a = [];
    		for (var i = 0, j = this.length; i < j; ++i) {
    			if (!fn.call(scope, this[i], i, this)) {
    				continue;
    			}
    			a.push(this[i]);
    		}
    		return a;
    	};
    }
    let arr = [1,2,3,4,5,6]
    let newArr = arr.filter(function (e) {
    	if (e > 3) {
    		return e
      }
    })
    console.log(newArr)

    参考: 深入理解JavaScript系列(32):设计模式之观察者模式

     

    二、字符串

    1. 判断子串是否存在

    方法一

    String.prototype.isContains = function(substr) {
      return new RegExp(substr).test(this)
    }
    
    let str = "My blog name is xiaoyulive";
    let	substr = "xiaoyulive";
    console.log(str.isContains(substr))

    方法二

    String.prototype.isContains = function(substr) {
      return this.indexOf(substr) >= 0
    }
    
    let str = "My blog name is xiaoyulive";
    let	substr = "xiaoyulive";
    console.log(str.isContains(substr))

    ES6有一个str.includes(substr)方法,不建议使用,可能会出错

    2. 判断一个字符串是否包含数组中某一项子串

    String.prototype.isContainsArrItem = function(substrArr) {
      for (str of substrArr) {
        if(this.indexOf(str) > -1)
          return true
      }
      return false
    }
    
    let str = "My blog name is xiaoyulive";
    let arr1 = ['aa', 'bb']
    let arr2 = ['aa', 'b']
    console.log(str.isContainsArrItem(arr1)) // false
    console.log(str.isContainsArrItem(arr2)) // true

     

      您阅读这篇文章共花了:  
     本文无需标签!
    二维码加载中...
    本文作者:小昱      文章标题: 对JS基础对象的扩展
    本文地址:http://www.xiaoyulive.top/?post=135
    版权声明:若无注明,本文皆为“小昱个人博客”原创,转载请保留文章出处。
    Asfalt93Hami2018-02-07 09:10
    асфальтирование краснодар цена
    в краснодаре средства на благоустройство города
    благоустройство участка краснодар
    краснодар цена асфальтирование
    озеленение благоустройство краснодар

    ----------------------
    http://благоустройство-краснодар.рф/
    返回顶部| 首页| 碰碰手气| 捐赠支持| 手机版本|后花园

    Copyright © 2016-2017 小昱个人博客 滇ICP备16006294号