📌  相关文章
📜  用于数组元素频率范围查询的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 15:11:16.914000             🧑  作者: Mango

用于数组元素频率范围查询的 Javascript 程序

在处理数组元素时,有时我们需要知道某一元素在数组中出现的次数,或者希望找到一定范围内出现次数在某一阈值以上的元素。这时我们可以使用以下 Javascript 程序来查询数组元素的频率范围。

代码片段
function getElementCountInRange(arr, minFreq, maxFreq) {
    let freqMap = new Map();
    for (let i = 0; i < arr.length; i++) {
        freqMap.set(arr[i], (freqMap.get(arr[i]) || 0) + 1);
    }
    let res = [];
    freqMap.forEach((value, key) => {
        if (value >= minFreq && value <= maxFreq) {
            res.push(key);
        }
    });
    return res;
}
代码分析

该程序使用了 ES6 中的 Map 数据结构,通过遍历数组元素将每个元素以及其频率保存在 Map 中。在遍历完成后,我们遍历整个 Map,将频率在 minFreq 和 maxFreq 之间的元素加入一个结果数组中并返回。在这里我们使用了 ES6 的箭头函数语法和 let 关键字来声明局部变量和循环变量。以下是详细解释:

  • elemntCountInRange(arr, minFreq, maxFreq): 函数接收三个参数,分别为要处理的数组,最小频率和最大频率。
  • let freqMap = new Map(): 创建一个空 Map 对象,用来保存每个元素以及其出现次数。
  • freqMap.set(arr[i], (freqMap.get(arr[i]) || 0) + 1): 遍历数组元素,对于每个元素,如果 Map 中已经存在该元素,则将其出现次数加 1;否则,将其出现次数初始化为 1。
  • let res = []: 创建一个空数组,用来保存频率在 minFreq 和 maxFreq 之间的元素。
  • freqMap.forEach((value, key) => { ... }): 遍历 Map 中的所有键值对,对于每一个键值对,函数会执行大括号中的代码。
  • if (value >= minFreq && value <= maxFreq) { res.push(key) }: 如果该元素的出现次数在 minFreq 和 maxFreq 之间,则将其加入结果数组中。
  • return res: 返回结果数组。
使用示例

以下是使用该程序查询数组元素频率范围的示例:

let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 1];
let res = getElementCountInRange(arr, 2, 4);
console.log(res); // [1, 2, 3, 4]

在上面的示例中,我们查询 arr 中出现次数在 2 到 4 次之间的元素,结果为 [1, 2, 3, 4]。