JS 数组去重(对象数组和非对象数组)、数组内的数组项顺序移动方法汇总

/**
 * 指定数组内的数组项位置交换
 * @param arr 选定的数组
 * @param index1 交换的目标索引
 * @param index2 要换到哪个位置的索引
 */
export const swapArray=(arr:[], index1:number, index2:number)=>{
  arr[index1] = arr.splice(index2, 1, arr[index1])[0]
  return arr
}

/**
 * 数组去重
 * @param arr 选中的数组
 */
export const duplicateRemoval=(arr:[])=>{
  return arr.reduce((cur, next) => {
    return cur.includes(next) ? cur : cur.concat(next);
  }, [])
}

/**
 * 对象数组去重
 * @param arr 选中的数组 
 * @param file 选中数组项的对象字段
 */
export const duplicateRemovalByObjArr=(arr:[],file:string)=>{
  return arr.reduce((cur, next) => {
    if (cur.length > 0 && cur.filter(x => x[file] === next[file]).length > 0) {
      return cur
    }
    else {
      cur.push(next)
      return cur
    }
  }, [])
}

 

posted @ 2020-09-29 15:36  洛晨随风  阅读(400)  评论(0编辑  收藏  举报