1.冒泡排序
//冒泡排序 思路:
//1.先遍历数组,然后每次遍历再套一个循环 用来 判断数值大小
//2.如果判断成立 先挪第一个元素,再挪第二个元素,否则最后一个元素不判断
//3.挪完后,内层循环次数减1,可以使用外层循环的 索引
let arr = [5, 4, 2, 6, 43, 52, 12];
let temp;
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);//[52, 43, 12, 6, 5, 4, 2]
2.数组去重
let arr = ['a', 'a', 2, 56, 22, 2];
//数组去重思路:
//1.将数组的第零个 元素 作为 对比元素
//2.内嵌循环 使用 节流阀 如果 判断相等 则变为 false,不相等 不执行 还是为true
//3.最后 做个判断,如果 flag 是 true 则push 近新数组
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('type error');
return;
}
//获取
let result = [arr[0]]
for (let i = 1; i < arr.length; i++) {
let flag = true;
for (let j = 0; j < result.length; j++) {
if (arr[i] === result[j]) {
flag = false;
//break语句用于立即退出循环,强制执行当前循环的下一条语句
//continue 语句跳过一次迭代
//return 是直接退出不再执行
break;
}
}
if (flag) {
result.push(arr[i]);
}
}
return result
}
console.log(unique(arr));//(4) ["a", 2, 56, 22]
3.给一个数组,数组中的元素转换为对象的健(值默认是1),如果有相同的数组元素,则值 + 1
//给一个数组,数组中的元素转换为对象的健(值默认是1),如果有相同的数组元素,则值 + 1
let arr = ['a', 'a', 's', 'b', 'a', 's', 'a'];
let key;
let obj = {};
let temp = [];
let newArr;
while (key = arr.shift()) {
temp.push(key)
newArr = temp.filter(item => item === key)
obj[key] = newArr.length === 0 ? 1 : newArr.length;
}
console.log(obj); //{a: 4, s: 2, b: 1}