欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

常用的数组操作工具方法封装

程序员文章站 2024-03-22 17:24:04
...

1、判断一个元素是否在数组内

contains = (arr,val) => {
	  return arr.indexOf(val) != -1 ? true : false
  },
  
  用法如下:

常用的数组操作工具方法封装

2、数组排序

 /**
	 *数组排序
   * @param    {type} 1:从小到大 2:从大到小 3:随机
   * @return   {Array}
   */
  sort = (arr, type) => {
  	return arr.sort( (a, b) => {
  		switch(type) {
  			case 1: 
  			  return a - b
  			case 2: 
  			  return b - a
  			case 3:
  			  return Math.random() - 0.5
  			default:
  			  return arr
  		}
  	})
  },

3、数组去重

	/*去重*/
	  unique = (arr) => {
	  	if(Array.hasOwnProperty('from')) {
	  		return Array.from(new Set(arr))
	  	} else {
	  		var n = {}, r = []
	  		for(var i = 0; i < arr.length; i++) {
	  			if(!n[arr[i]]) {
	  				n[arr[i]] = true
	  				r.push(arr[i])
	  			}
	  		}
	  		return r
	  	}
	  },

4、求两个集合的并集

union = (a, b) => {
  	var newArray = a.concat(b)
  	return unique(newArray)
  },

5、求两个集合的交集

intersect = (a, b) => {
  	a = unique(a)
  	return map(a, function(o) {
  		return contains(b, o) ? o : null
  	})
  },

6 、删除数组其中一个元素

 remove = (arr, ele) => {
  	var index = arr.indexOf(ele)
  	if(index > -1) {
  		arr.splice(index, 1)
  	}
  	return arr
  },

7、将类数组转换为数组的方法

formArray = (ary) => {
  	var arr = []
  	if(Array.isArray(ary)) {
  		arr = ary
  	} else {
  		arr = Array.prototype.slice.call(cry)
  	}
  	return arr
  },

8、求数组最大值

max = (arr) => {
  	return Math.max.apply(null, arr)
  },

9 、求数组最小值

min = (arr) => {
  	return Math.min.apply(null, arr)
  },

10、数组求和

sum = (arr) => {
  	return arr.reduce( (pre, cur) => {
  		return pre + cur
  	})
  },

11、求数组的平均值

 average = (arr) => {
  	return sum(arr)/arr.length
  },

12、数组的深克隆

deepCopy = (arr ,aimArr) => {
    var aimArr = aimArr || {};
    for(var i in arr){
      if(typeof arr[i] === 'object'){
        //要考虑深复制问题了
        if(arr[i].constructor === Array){
          //这是数组
          aimArr[i] =[];
        }else{
          //这是对象
          aimArr[i] = {};
        }
        deepCopy(arr[i],aimArr[i]);
      }else{
        aimArr[i] = arr[i];
      }
    }
    return aimArr
  },

13、递归删除enterprises为空的属性

recursionDelete = (list) => { //递归删除enterprises为空的属性
    list.forEach(function(item, index) {
      if(item.enterprises.length === 0) {
        delete item.enterprises
      } else {
        recursionDelete(item.enterprises)
      }
    })
    return list
  }

上一篇: 使用ADB命令进行UI自动化

下一篇: