文章目录
JS中的数组排序和去重
数组排序方法
1.使用数组arr.reverse();
将原始数据倒置未实际排序
let arr = [10,20,12,4,5,6,1,50,123];
let result = arr.reverse();
console.log(result); //=>输出结果[123, 50, 1, 6, 5, 4, 12, 20, 10]
2.使用arr.sort()排序
let arr = [10,20,12,4,5,6,1,50,123];
arr.sort(function(a,b){
return a - b; //=>正序a-b,倒序b-a
});
console.log(arr); //=>[1, 4, 5, 6, 10, 12, 20, 50, 123]
3.冒泡排序
利用数据两两比较,数据小的靠前排列
var arr = [10, 20, 12, 4, 5, 6, 1, 50, 123];
var arrSorted = bubbleSort(arr);
function bubbleSort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(arr); //=>[1, 4, 5, 6, 10, 12, 20, 50, 123]
数组中的去重
1.利用双for去重
let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
for (let i = 0; i < arr.length - 1; i++) {
let item = arr[i];
for (let j = i + 1; j < arr.length; j++) {
if (item === arr[j]) {
arr[j] = arr[arr.length - 1]; //用最后一项替换当前项
arr.length--; //将最后一项删掉
j--; //下一次还和这一项比较
}
}
}
console.log(arr);//=>输出结果 [1, 2, 3, 4, 5, 34, '10']
2.利用键值对去重
let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
let obj = {};
for (let i = 0; i < arr.length; i++) {
let item = arr[i];
if (obj[item] !== undefined) {
arr[i] = arr[arr.length - 1];
arr.length--;
i--;
continue;
}
obj[item] = item;
}
console.log(arr);//=>输出结果 [1, 2, 3, 4, 5, 34, '10']
3.ES6中set数据结构去重
let arr = [1, 2, 3, 4, 5, 2, 34, 1, 3, 4, 34, '10', '10'];
arr = Array.from(new Set(arr));
console.log(arr); //=>输出结果 [1, 2, 3, 4, 5, 34, '10']