javascript - typescript 计算数组中的重复项并按每个项目的计数对结果进行排序

标签 javascript arrays typescript

我有一个数组,它是根据从 api 调用中提取的值填充的。 该数组将具有这样的值

["9777", "9777", "2.4", "9777", "2.4", "2.4", "9777", "2.4", "2.4", "9777", "9777", "2.4", "2.4", "2.4"]

我想要做的是获取数组中每个项目出现的次数,并根据计数对它进行降序排序。

我做了这个,这是我从 stackoverflow 得到的:

data.forEach(function (x) {
  counts[x] = (counts[x] || 0) + 1;
});

它有效,但它给出了奇怪的结果,这使得很难从结果中提取值。 结果如下: enter image description here

最佳答案

另一种方法是使用函数reduce来计数并使用计数创建一个对象,然后使用函数sort

如果你想通过“名称”提取特定对象,可以使用函数find:

let array = ["9777", "9777", "2.4", "9777", "2.4", "2.4", "9777", "2.4", "2.4", "9777", "9777", "2.4", "2.4", "2.4"],
    counts = Object.values(array.reduce((a, c) => {
      (a[c] || (a[c] = {name: c, count: 0})).count += 1;
      return a;
    }, {})).sort(({count: ac}, {count: bc}) => bc - ac),
    target = "2.4",
    found = counts.find(({name}) => name === target);

console.log(counts);
console.log(found);
console.log(found.count);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - typescript 计算数组中的重复项并按每个项目的计数对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50662639/

相关文章:

javascript - GIPHY API 中的对象不打印任何内容

javascript - 在 html 页面上加载 WordPress 帖子

javascript - 如何更改 vimeo 默认皮肤

c - 为什么 sizeof(*pointer) 输出为 1?

java - 尝试将 int 数组的内容复制到 Dimension 数组会导致 NullPointerException

javascript - 在方法中表达异步方法

javascript - 将状态从 childComp 传输到 ParentComp

javascript - jQuery/JavaScript 函数无法识别 "-webkit-clip-path"?

c++ - 固定大小和零初始化数组作为 C++11 中的默认参数

typescript - 如何在 react-native-day-picker 中初始化状态?