js实用方法-数组

141 阅读1分钟

这里面说的是我平常总结的js方法不是es6出现的js方法

  • 数组去重
/**
 * 功能:数组去重
 * 是否修改原数组:否
 * 返回值:去重之后的数组
 */
function arrayWeightRemoval(arr) { //数组去重
  return [...new Set(arr)]
}
  • 对象构成的数组,来了新对象后,需要和数组中的对象进行对比,有更新,无添加
/**
 * 功能:向数组中添加对象
 *    1.如果数组中没有该对象 ==> 添加
 *    2.如果数组中有该对象 ==> 更新
 * 是否修改原数组:是
 * 参数:
 *    targetArr:需要添加obj的数组
 *    selectObj:被添加到targetArr的对象
 *    compareAttr:用于对比的属性
 * 返回值:array
 */
function arrayAddObj(targetArr, selectObj, compareAttr) {
  let bool = targetArr.some(item => { //some循环可以自动终止有助于提高效率
    if (item[compareAttr] == selectObj[compareAttr]) {
      Object.assign(item, selectObj);
      return true
    }
  });
  !bool && targetArr.push(selectObj);
  return targetArr;
}
  • 将对象构成的数组,根据另一个数组进行拆分(一拆二)
/**
         * 功能:根据传入的数组拆分目标数组
         * 参数:
         *      allArr:需要拆分的数组
         *      compareArr:参照数组
         *      compareAttr:参照属性
         *      childArr1:拆分数组之后的子数组
         *      childArr2:拆分数组之后的子数组
         * 是否改变原数组:否
         * 返回值:对象
        */
        function splitArr(allArr, compareArr, compareAttr, childArr1, childArr2) {
            let temArr = compareArr.map(item => {
                return item[compareAttr]
            });
            allArr.forEach(item => {
                switch (temArr.includes(item[compareAttr])) {
                    case true:
                        childArr1.push(item)
                        break;
                    case false:
                        childArr2.push(item)
                        break;
                }
            })
            return {
                childArr1,
                childArr2
            }
        }