let arr = [11, 33, 11, 22]
let list = Array.from(new Set(arr))
console.log(list)
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
j--
}
}
}
外循环是表示循环多少次完成排序的工作
内循环是每次选出一个最大值放置到最后,内循环使用arr.length-i,目的避免浪费性能,因为每次完成一次内循环可以确认最大值都会放到后置位,所有经过前一轮内循环比较出来的值,不用在继续和接下来内循环的最大值做比较,i值也每次只会递增1,说明每一轮每循环都会选出一个本轮在最大的值,放在后面,所有内循环时使用arr.length-i,能减少比较的次数
实现的过程
通过内循环比较相邻两个值的大小
如果左边比右边大
使用中间变量 m 来存放小值
将左边的值赋值给右边 arr[j+1] = arr[j]
将m值赋值给左边变量 arr[j] = m
这样就实现了大小值的位置互换
继续内循环时 将会用大值 和 它右边的值继续比较
重复上面的逻辑
最后完成一圈内循环 就能得到一个最大值 放置到数组的最后面
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length - i;j++){
if(arr[j]>arr[j+1]){
let m = arr[j+1]
arr[j+1] = arr[j]
arr[j] = m
}
}
}
console.log(arr)
let aryList = [
{ name: '小铭', age: 18 },
{ name: '小铭', age: 18 },
{ name: '小红', age: 5 },
{ name: '王师傅', age: 58 },
{ name: '王师傅', age: 58 },
{ name: '电脑维修元', age: 178 }
]
function qx(aryList) {
let obj = {};
let newList= [];
for(let i=0;i<aryList.length;i++){
例如
obj = {
小铭:{ name: '小铭', age: 18 },
小铭:{ name: '小铭', age: 18 },
}
当出现重复的属性时后面的会替换掉前面key对应的值
得到的是下面的结果,不会出现上面的情况,所有能实现去重
obj = {
小铭:{ name: '小铭', age: 18 },
}
相同属性只能存在一个在对象的同一级中
obj[aryList[i].name] = aryList[i]
}
for(let key in obj){
newList.push(obj[key])
}
newList.sort(function(a,b){
let value1 = a.age
let value2 = b.age
return value1 - value2
})
console.log(newList)
}
qx(aryList)