js获取对象数组中重复项的个数并排序,js数组对象筛选出重复数据 并计算 重复了几次

js数组对象筛选出重复数据 并计算 重复了几次

例如:
把以下数据

let arr = [
	{kuaidizhandian:'顺丰快递'},
	{kuaidizhandian:'邮政快递'},
	{kuaidizhandian:'顺丰快递'}
]

转换为

kuaidarr = [
	{kuaidizhandian:'顺丰快递',num:2},
	{kuaidizhandian:'邮政快递',num:1},
]

完整的代码示例:

	const countObj = {};
	arr.forEach((item1) => {
		const key = item1.kuaidizhandian;
		if (countObj[key]) {
			countObj[key]++;
		} else {
			countObj[key] = 1;
		}
	});
	const countArr = Object.entries(countObj).sort((a, b) => b[1] - a[1]);
	// 输出列表
	countArr.forEach(([key, value]) => {
		kuaidarr.push({
			kuaidizhandian:key,
			num:value
		});
		console.log(`${key}: ${value}`);
	});
	console.log(kuaidarr) // [ {kuaidizhandian:'顺丰快递',num:2},{kuaidizhandian:'邮政快递',num:1}, ]

实现思路:
遍历数组并统计次数
首先,我们需要遍历目标对象数组,并统计每个对象出现的次数。我们可以使用forEach()或for…of循环实现,对于每个对象,以其特定属性的值作为键,在一个空对象中查找相应的值。如果已经存在,则将其加1;否则,将其初始值设为1。代码示例:

const arr = [
  { id: 1, name: 'Tom' },
  { id: 2, name: 'Jerry' },
  { id: 3, name: 'Tom' },
  { id: 4, name: 'Lucy' },
  { id: 5, name: 'Jerry' }
];

const countObj = {};

arr.forEach((item) => {
  const key = item.name;
  if (countObj[key]) {
    countObj[key]++;
  } else {
    countObj[key] = 1;
  }
});

console.log(countObj); // {Tom: 2, Jerry: 2, Lucy: 1}

在这个例子中,我们使用forEach()方法遍历了包含5个对象的数组,并以name属性的值作为键,在countObj对象中查找相应的值。如果该值已经存在,则将其加1;否则,将其初始值设为1。最终,我们得到了一个包含每个人名出现次数的对象。

将次数排序并输出

接下来,我们需要将对象中的次数排序,并以某种格式输出。我们可以使用Object.entries()方法将对象转化为键值对数组,然后使用sort()方法按照值的大小升序或降序排列。最后,我们可以选择以表格、列表或其他方式输出结果。代码示例:

const countArr = Object.entries(countObj).sort((a, b) => b[1] - a[1]);

console.log(countArr); // [["Tom", 2], ["Jerry", 2], ["Lucy", 1]]

// 输出表格
console.table(countArr);

// 输出列表
countArr.forEach(([key, value]) => {
  console.log(`${key}: ${value}`);
});

在这个例子中,我们先使用Object.entries()方法将countObj对象转化成一个包含键值对的数组。然后,我们使用sort()方法按照出现次数降序排列。最后,我们可以选择以表格或列表形式输出结果。

总结
本篇博客介绍了如何使用JavaScript获取对象数组中每一项重复项的个数,并按照出现次数排序。通过使用forEach()方法遍历数组,以特定属性的值作为键,在一个空对象中统计每个对象出现的次数。然后,我们使用Object.entries()方法将对象转化成键值对数组,并使用sort()方法按照值的大小排序。最后,我们可以选择以表格或列表形式输出结果。

参考大佬文章地址

你可能感兴趣的:(javascript)