插件窝 干货文章 前端如何统计后台返回数组中重复数据的次数?

前端如何统计后台返回数组中重复数据的次数?

banana apple count const 805    来源:    2025-03-19

在前端开发中,统计后台返回数组中重复数据的次数可以通过多种方式实现。以下是几种常见的方法:

方法1:使用 reduce 方法

reduce 是一个强大的数组方法,可以用来统计数组中每个元素的出现次数。

const data = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];

const count = data.reduce((acc, item) => {
  acc[item] = (acc[item] || 0) + 1;
  return acc;
}, {});

console.log(count);
// 输出: { apple: 2, banana: 3, orange: 1 }

方法2:使用 for 循环

你也可以使用传统的 for 循环来遍历数组并统计每个元素的出现次数。

const data = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
const count = {};

for (let i = 0; i < data.length; i++) {
  const item = data[i];
  count[item] = (count[item] || 0) + 1;
}

console.log(count);
// 输出: { apple: 2, banana: 3, orange: 1 }

方法3:使用 Map 数据结构

Map 是 ES6 引入的一种数据结构,可以用来存储键值对,并且键可以是任意类型。

const data = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
const count = new Map();

data.forEach(item => {
  count.set(item, (count.get(item) || 0) + 1);
});

console.log(Object.fromEntries(count));
// 输出: { apple: 2, banana: 3, orange: 1 }

方法4:使用 lodash

如果你已经在项目中使用了 lodash 库,可以使用 _.countBy 方法来简化操作。

const _ = require('lodash');

const data = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
const count = _.countBy(data);

console.log(count);
// 输出: { apple: 2, banana: 3, orange: 1 }

方法5:使用 Setfilter

你可以使用 Set 来获取数组中的唯一值,然后使用 filter 来统计每个唯一值的出现次数。

const data = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
const uniqueItems = [...new Set(data)];

const count = uniqueItems.reduce((acc, item) => {
  acc[item] = data.filter(i => i === item).length;
  return acc;
}, {});

console.log(count);
// 输出: { apple: 2, banana: 3, orange: 1 }

总结

以上几种方法都可以有效地统计数组中每个元素的出现次数。选择哪种方法取决于你的具体需求以及项目中是否已经引入了某些库(如 lodash)。对于大多数情况,使用 reducefor 循环是最直接和高效的方式。