del-arr-obj.ts 1.19 KB
Newer Older
hucy's avatar
hucy committed
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
import { AnyType } from 'src/common/types';

function func(data: Array<any>, key: string, value: any) {
  return data.filter((item: any) => {
    return item[key] == value;
  });
}

/**
 * 数组对象删除 改变原数组
 * @param objArr - 原始数组
 * @param valueData - 删除的对象条件{age:18,num:1}
 **/
export const delArrObj = function (objArr: Array<any>, valueData: AnyType) {
  for (let i = 0; i < objArr.length; i++) {
    objArr[i].item_del_id = i;
  }
  const valueDataArr = [] as any[];
  for (const key in valueData) {
    valueDataArr.push({
      key: key,
      value: valueData[key],
    });
  }

  let resArr = [] as any;
  for (let i = 0; i < valueDataArr.length; i++) {
    if (i == 0) {
      const res = func(objArr, valueDataArr[i].key, valueDataArr[i].value);
      resArr = res;
    } else {
      const res = func(resArr, valueDataArr[i].key, valueDataArr[i].value);
      resArr = res;
    }
  }

  for (let i = 0; i < objArr.length; i++) {
    for (let j = 0; j < resArr.length; j++) {
      if (objArr[i].item_del_id == resArr[j].item_del_id) {
        objArr.splice(i, 1);
      }
    }
  }
  for (let i = 0; i < objArr.length; i++) {
    delete objArr[i].item_del_id;
  }
};