练习一

实现一个去重函数unique,输入一个array,返回一个去除了重复元素的新array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function unique(arr) {
let set = new Set()
return arr.reduce((unique_list,x)=>{
if(set.has(x))
return unique_list;
else{
set.add(x);
return unique_list.concat([x]);
}
},[])
}

console.log(unique([1,1,2,2,3,4,5,6,1,3,6,7]))
// output: [ 1, 2, 3, 4, 5, 6, 7 ]

练习二

实现一个字符串数组的去重函数aclean,把由相同的字母集组成的单词看作是重复的字符串,去除这些重复的字符串,返回新的字符串数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function aclean(arr) {
const getSortedString = str =>{
return Array.from(str.toLowerCase()).sort().join("")
}
let set = new Set()
return arr.reduce((unique_list,x) => {
const sortedString = getSortedString(x)
if(set.has(sortedString)){
return unique_list
}else{
set.add(sortedString)
return unique_list.concat([x])
}
},[])
}

console.log(aclean(["abc","bca","acb","CNM","cmn","fuck","ckuf","FUCK"]))
// output: [ 'abc', 'CNM', 'fuck' ]

练习三

输入姓名:工资Object,输出工资最高的人的姓名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let salaries = {
"John": 100,
"Pete": 300,
"Mary": 250,
"fuck": 400,
"12dora": 450
}

function topSalary(sal){
let {name,money} = Object.entries(sal).reduce((theTop,[name,money]) => {
if(theTop.money < money){
return {
name: name,
money: money
}
}else return theTop
},{
name :null,
money:0
})
return name
}

console.log(topSalary(salaries))
// output: 12dora