好的,让我们一步步解决这些问题。 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`。希望这能帮助到你! [2024-11-02 19:34:27 | AI写代码神器 | 1001点数解答]