all files / src/Array/ index.js

68.97% Statements 20/29
61.9% Branches 13/21
100% Functions 4/4
71.43% Lines 20/28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                                                      29× 11× 12×                                                
import slice from "./slice"
import {testArray,testInclude} from "../Test";
 
/**
* chunk 数组拆分
* @since 1.0.0
* @param {Array} array
* @param {Number} size
* @returns {Array}
*/
export function chunk(array,size= 1){
  testArray(array)
  size = Math.max(parseInt(size),0)
  const length = array == null ? 0 : array.length
  Iif (!length || size < 1) {
    return []
  }
  let index = 0
  let resIndex = 0
  const result = new Array(Math.ceil(length / size))
 
  while (index < length) {
    result[resIndex++] = slice(array, index, (index += size))
  }
  return result
}
 
/**
* sort 数组排序
* @since 1.0.0
* @param {Array} array
* @param {Number} type 1:从小到大 2:从大到小 3:随机
* @param {String} key 根据键值排序 默认为空
* @returns {Array}
*/
export function sort(array,type = 1,key= null){
  type = parseInt(type)
  testArray(array)
  testInclude(type,[1,2,3])
  // 使用键值排序
  return array.sort((a, b) => {
    switch (type) {
      case 1:return key ? a[key] - b[key] : a - b;
      case 2:return key ? b[key] - a[key] : b - a;
      case 3:return Math.random() - 0.5;
      default:return array
    }
  })
}
 
/**
* unique 数组去重
* @since 1.0.0
* @param {Array} array
* @returns {Array}
*/
export function unique(array){
  Eif ( Array.hasOwnProperty('from') ) {
    return Array.from(new Set(array));
  }else{
    var n = {},r=[];
    for(var i = 0; i < array.length; i++){
      if (!n[array[i]]){
        n[array[i]] = true;
        r.push(array[i]);
      }
    }
    return r;
  }
}