复杂List数据去重后排序

1.两个功能函数实现

1.去重函数一
function unique(arr, key) {
    var res = new Map();
    return arr.filter(function (a) {
      return !res.has(a[key]) && res.set(a[key], 1);
    });
  }
2.去重函数二
function uniqueArray(arr = [], key) {
	const keyValues = new Set();
	let val;
	return arr.filter((obj) => {
		val = obj[key];
		if (keyValues.has(val)) {
 		return false;
	}
	keyValues.add(val);
	return true;
	});
}
3.排序函数
  function sortBy(attr, rev) {
    if (rev == undefined) {
      rev = 1;
    } else {
      rev = rev ? 1 : -1;
    }
    return function (a, b) {
      a = Number(a[attr]);
      b = Number(b[attr]);
      if (a < b) {
        return rev * -1;
      }
      if (a > b) {
        return rev * 1;
      }
      return 0;
    };
  }
const arr = [
    {
      id: 1,
      name: "s",
    },
    {
      id: 4,
      name: "ssss",
    },

    {
      id: 4,
      name: "ssss",
    },
    {
      id: 4,
      name: "ssss",
    },

    {
      id: 2,
      name: "ss",
    },
    {
      id: 2,
      name: "ss",
    },
    {
      id: 2,
      name: "ss",
    },
    {
      id: 3,
      name: "sss",
    },
  ];
const res = unique(arr, "id").sort(sortBy("id", true));
console.log(res);
res => [
0: {id: 1, name: 's'}
1: {id: 2, name: 'ss'}
2: {id: 3, name: 'sss'}
3: {id: 4, name: 'ssss'}
]
posted @ 2022-08-05 10:44  SKa-M  阅读(60)  评论(0编辑  收藏  举报