Source: assists/arrayAssist.js

/** @module */

/**
 * 转换为二维数组
 * @param spliceNum
 * @param arrayNum
 * @returns {*}
 */
const toTwoDimen = function (spliceNum = null, arrayNum = null) {
  if (spliceNum !== null && arrayNum === null) {
    let num = this.length % spliceNum === 0 ? parseInt(this.length / spliceNum) : parseInt(this.length / spliceNum) + 1
    let newArrays = []
    for (let i = 0; i < num; i++) {
      let arr = this.slice(spliceNum * i, spliceNum * (i + 1))
      if (arr.length > 0) {
        newArrays.push(arr)
      }
    }
    return newArrays
  } else if (spliceNum === null && arrayNum !== null) {
    let newArrays = []
    const num = parseInt(this.length / arrayNum)
    for (let i = 0; i < arrayNum; i++) {
      let arr = this.slice(num * i, num * (i + 1))
      if (arr.length > 0) {
        newArrays.push(arr)
      }
    }
    if (num * arrayNum < this.length) {
      newArrays[newArrays.length - 1] = newArrays[newArrays.length - 1].concat(this.slice(num * arrayNum, this.length))
    }
    return newArrays
  } else {
    return null
  }
}

/**
 * 简单去重
 */
const uniq = function () {
  return [...new Set(this)]
}

/**
 * 移除null、undefined以及空字符串
 * @returns {Array}
 */
const removeEmpty = function () {
  const results = []
  this.forEach((ele) => {
    if (ele !== null && ele !== undefined && ele !== '') {
      results.push(ele)
    }
  })
  return results
}

/**
 * 计算平均数
 * @returns {any}
 */
const getAverage = function () {
  let sum = '0'
  this.forEach((ele) => {
    sum = sum.add(ele)
  })
  return sum.div(this.length.toString())
}

/**
 * 取数组最后一个元素
 * @returns {*}
 */
const getLastOne = function () {
  return this[this.length - 1]
}

/**
 * 取数组第一个元素
 * @returns {*}
 */
const getFirstOne = function () {
  return this[0]
}

Array.prototype.toTwoDimen = toTwoDimen
Array.prototype.uniq = uniq
Array.prototype.removeEmpty = removeEmpty
Array.prototype.getAverage = getAverage
Array.prototype.getLastOne = getLastOne
Array.prototype.getFirstOne = getFirstOne