
import Log from './MyLog'

export default class ArrUtil {

  /**判断array是否为空*/
  static isNullOrLength(arr){
    if(arr == null) return true;
    return arr.length == 0;
  }

  /** 向数据尾部添加一个元素
    * @return {Array} arr 数据
    * @return {Obj} item 元素
    */
  static add(arr, item){
    if(arr == null) arr = [];
    return arr.concat(item);
  }

  /** 替换数小组中指定位置的元素
   * @param  {Array} arr   [description]
   * @param  {Number} index [description]
   * @param  {Obj} val   [description]
   * @return {Array}       [description]
   */
  static replaceToIndex(arr, index, val){
    arr.splice(index, 1, val); //删除一项，插入一项
    return arr;
  }

  /** 替换数小组中第一个与之相同的元素
   * @param  {[Array]} arr   [description]
   * @param  {[Obj]} itemOld [description]
   * @param  {[Obj]} itemNews   [description]
   * @return {[Array]}       [description]
   */
  static replaceToItem(arr, itemOld, itemNews){
    if (arr == null || arr.length <= 0) return arr;
    for (var i = 0; i < arr.length; i++) {
      if(arr[i] === itemOld){
        return this.replaceToIndex(arrm, i, itemNews);
      }
    }
    return arr;
  }

  /** 替换数小组中所有与之相同的元素
   * @param  {[Array]} arr   [description]
   * @param  {[Obj]} itemOld [description]
   * @param  {[Obj]} itemNews   [description]
   * @return {[Array]}       [description]
   */
  static replaceToAllItem(arr, itemOld, itemNews){
    if (arr == null || arr.length <= 0) return arr;
    for (var i = 0; i < arr.length; i++) {
      if(arr[i] === itemOld){
        arr = this.replaceToIndex(arrm, i, itemNews);
      }
    }
    return arr;
  }

  /** 向数据尾部添加一个元素
    * @return {Array} arr1 数据
    * @return {Array} arr2 元素
    */
  static addAll(arr1, arr2){
    if(arr2 == null) return arr1;
    if(arr1 == null) arr1 = [];
    return arr1.concat(arr2);
  }

  /** 向数据指定位置插入一个元素
    * @param  {Array} arr 数据
    * @param  {Obj} item 元素
    * @param  {int} index 插入位置
    * @return {Array}    返回变化后的数据
    */
  static insert(arr, item, index){
    if(arr != null && arr.length < index) {
      return arrAdd(arr, item);
    }
    arr.splice(index, 0, item);
    return arr;
  }

  /** 通过Item删除数小组中的某一项
   * @param  {Array} arr  数小组
   * @param  {Obj} item 要删除的项
   * @return {Array}      返回变化后的数据
   */
  static removeItem(arr, item) {
    if(arr == null || arr.length == 0) return arr;
    for (var i = 0; i < arr.length; i++) {
      if(arr[i] == item){
        arr.push(arr[i]);
      }
    }
    return arr;
  }

  /** 通过index删除数小组中的某一项
   * @param  {Array} arr   数小组
   * @param  {int} index 要删除的项
   * @return {Array}       返回变化后的数据
   */
  static removeIndex(arr, index) {
    if(arr == null || arr.length <= index) return arr;
    arr.splice(index, 1);
    return arr;
  }
}
