JavaScript 实战:数组操作(找相同元素、统计重复元素)与定时器功能模拟
好的,让我们一步步解决这些问题。 1. 找出两个数组当中相同的元素 我们可以使用 `Set` 数据结构来快速查找两个数组中的相同元素。 ```javascript var arr1 = [1, 2, 7, 4, 3, "a", "d", "g"]; var arr2 = [7, 3, "d", "g", "h", 3, 7]; function findCommonElements(arr1, arr2) { const set1 = new Set(arr1); const set2 = new Set(arr2); const commonElements = []; for (const element of set1) { if (set2.has(element)) { commonElements.push(element); } } return commonElements; } console.log(findCommonElements(arr1, arr2)); // 输出: [7, 3, 'd', 'g'] ``` 2. 找出重复次数最多的元素及每个元素的重复次数 我们可以使用一个对象来记录每个元素出现的次数,然后找出重复次数最多的元素。 ```javascript var arr = ["a", "b", "c", "a", "a", "b", "d", "e", "f", "c", "g", "d", "e", "g", "a", "c", "a", "h", "a"]; function findMostFrequentElement(arr) { const frequencyMap = {}; let maxFrequency = 0; let mostFrequentElement = null; for (const element of arr) { if (frequencyMap[element]) { frequencyMap[element]++; } else { frequencyMap[element] = 1; } if (frequencyMap[element] > maxFrequency) { maxFrequency = frequencyMap[element]; mostFrequentElement = element; } } const result = { mostFrequentElement: mostFrequentElement, frequency: maxFrequency, allFrequencies: frequencyMap }; return result; } const result = findMostFrequentElement(arr); console.log(`重复次数最多的元素是: '${result.mostFrequentElement}',重复次数: ${result.frequency}`); console.log('每个元素的重复次数:', result.allFrequencies); // 输出: // 重复次数最多的元素是: 'a',重复次数: 6 // 每个元素的重复次数: { a: 6, b: 2, c: 3, d: 2, e: 2, f: 1, g: 2, h: 1 } ``` 3. 用 `setTimeout` 实现 `setInterval` 的功能 `setInterval` 实际上是不断地调用 `setTimeout` 来实现的。我们可以通过一个递归函数来模拟 `setInterval` 的行为。 ```javascript function customSetInterval(callback, delay) { function interval() { callback(); setTimeout(interval, delay); } setTimeout(interval, delay); } // 测试 let counter = 0; customSetInterval(() => { console.log(`Counter: ${counter++}`); if (counter >= 5) { // 假设我们只运行5次 console.log('Stopping interval.'); clearIntervalCustom(); // 停止自定义的 interval } }, 1000); // 为了能够停止自定义的 interval,我们需要一个变量来保存 timeout ID let customIntervalId = null; function customSetIntervalWithStop(callback, delay) { function interval() { callback(); customIntervalId = setTimeout(interval, delay); } customIntervalId = setTimeout(interval, delay); } function clearIntervalCustom() { clearTimeout(customIntervalId); } // 重新测试,这次使用带停止功能的版本 counter = 0; customSetIntervalWithStop(() => { console.log(`Counter: ${counter++}`); if (counter >= 5) { console.log('Stopping interval.'); clearIntervalCustom(); } }, 1000); ``` 以上代码实现了三个要求:找出两个数组中的相同元素、找出重复次数最多的元素及其重复次数、用 `setTimeout` 模拟 `setInterval`。希望这能帮助到你! ######[AI写代码神器 | 1001点数解答 | 2024-11-02 19:34:27]
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)379
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)366
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)403
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)351
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)352
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)298
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)310
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)98
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)104
- 基于商品效期规则的本地网页管理系统,无需服务器和网络,单HTML文件本地浏览器运行。 商品效期规则: 保质期≥12个月:临期提醒提前45天,下架提前5天(含过期提醒) 6个月≤保质期<12个月:临期提醒提前20天,下架提前3天(含过期提醒) 3个月≤保质期<6个月:临期提醒提前15天,下架提前3天(含过期提醒) 30天≤保质期<3个月:临期提醒提前10天,下架提前3天(含过期提醒) 15天≤保质期<30天:临期提醒提前5天,下架提前3天(含过期提醒) 保质期≤15天:临期提醒提前3天,下架提前2天(含过期提醒) 一定要遵守上门这个规则,状态以上位置,需要一一对应。 严格遵循 6 级保质期规则 → 自动计算「临期/下架/过期」状态(绿/黄/红) 产品管理模块: 商品列表展示:序号、名称、类别、生产日期、保质期、到期日、剩余天数(带单位)、状态(正常/临期/下架(一定要注意,选择类型要根据选择显示),对应绿/黄/红颜色)、操作(编辑、删除、备注),默认按照后添加先排,还需要根据一些条件,比如剩余天数可以筛选排序。 功能:添加商品(弹窗形式,保质期仅支持"XX天"或"XX月"格式)(讯飞星火 | 2053点数解答 | 2026-04-01 23:04:48)27
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)29
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)447