作者:liuliyu2000_867 | 来源:互联网 | 2024-12-05 18:51
本文将探讨并实现一系列常见的JavaScript算法,包括数组排序、数组去重、随机化数组、统计数组或字符串中元素的出现次数以及解析URL中的参数。这些算法对于日常编程任务非常实用。
Javascript 常用算法实现
本文将详细介绍几个常用的Javascript算法实现,旨在帮助开发者提高代码效率和质量。涵盖的内容包括数组排序、数组去重、随机化数组、统计数组或字符串中元素的出现次数以及解析URL中的参数。
数组排序
在众多排序算法中,快速排序因其高效性而被广泛采用。下面将展示冒泡排序和快速排序的实现方法。
1. 冒泡排序
let arr = [0, 4, 2, 1, 3];
for (let i = 0; i for (let j = 0; j if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
console.log(arr);
2. 快速排序
function quickSort(arr) {
if (arr.length <= 1) return arr;
let pivotIndex = Math.floor(arr.length / 2);
let pivot = arr.splice(pivotIndex, 1)[0];
let left = [], right = [];
for (let i = 0; i if (arr[i] <= pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
console.log(quickSort([0, 4, 2, 1, 3]));
数组去重
数组去重是处理数据时常见的需求。以下是几种实现方式:
1. 遍历数组法
let arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];
let newArr = [];
arr.forEach(item => {
if (!newArr.includes(item)) {
newArr.push(item);
}
});
console.log(newArr);
2. 利用Set去重
let arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr);
随机化数组
随机化数组可以使用Fisher-Yates洗牌算法实现,确保每个元素都有相同的概率出现在任何位置。
let arr = [2, 5, '6', 3, 9, '2', 4, 7];
for (let i = arr.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
console.log(arr);
统计数组或字符串中元素出现次数
统计数组或字符串中元素的出现次数可以通过创建一个对象来记录每个元素的出现频率。
1. 数组元素出现次数
let arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];
let counts = {};
arr.forEach(item => {
counts[item] = (counts[item] || 0) + 1;
});
console.log(counts);
2. 字符串字符出现次数
let str = 'abdcsdwdaoprr';
let charCounts = {};
for (let char of str) {
charCounts[char] = (charCounts[char] || 0) + 1;
}
console.log(charCounts);
解析URL参数
解析URL中的查询参数可以帮助我们更好地处理网页请求中的数据。
let url = 'https://www.google.com.hk/search?safe=strict&ei=M_u5WvLZO4bzUrfpn_AJ&q=js%9F%&oq=js%E7%BB&gs_l=psy-ab';
let params = new URLSearchParams(new URL(url).search);
let urlParams = {};
params.forEach((value, key) => {
urlParams[key] = value;
});
console.log(urlParams);