-
已知数组:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
let res = Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {return a-b})
console.log(res)
这边主要考的事es6的api
- Array.from 将类数组对象转化为数组
- new Set set数据结构,类似数组,成员唯一
- flat 用于将嵌套的数组“拉平”
结果:
- 请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B, C1, C2, C, D1, D2, D]。
let a1 = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2']
let a2 = ['A', 'B', 'C', 'D'].map((item) => {
return item + 3
})
let a3 = [...a1, ...a2].sort().map((item) => {
if(item.includes('3')){
return item.split('')[0]
}
return item
})
console.log(a3)
结果:
这里比较巧妙的利用在a2数组的每一项拼接字符串‘3’,以此来用作排序的条件,然后再加‘3’去除掉,得到结果。
- 改造下面的代码,使之输出0 - 9,写出你能想到的所有解法。
for (var i = 0; i< 10; i++){
setTimeout(() => {
console.log(i);
}, 1000)
}
解1.
for (let i=0; i<10; i++) {
setTimeout(() => {
console.log(i)
}, 1000)
}
这里是利用了let的特性,拥有块级作用域,不会变量提升
解2.
for (var i=0; i<10; i++) {
setTimeout(((i) => {
console.log(i)
})(i), 1000)
}
这里是利用立即执行函数传参