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

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
  }

猜你喜欢

转载自blog.csdn.net/weixin_43787528/article/details/89496705
今日推荐