目录
声明一个空的数组,利用循环和数组元素添加的方式将10000个随机的1-10的元素添加到数组当中
var arr = []
for (var i = 1; i <= 10000; i++) {
arr.push(Math.ceil(Math.random() * 10))
}
1.数组排序+for循环
- 思路:将数组里的元素进行升序排列,然后再利用for循环遍历数组中所有元素,最后用if判断当前元素与后一个元素是否相同,相同则删除该元素
arr.sort((a, b) => a - b)
for (var j = 0; j < arr.length; j++) {
if (arr[j] == arr[j + 1]) {
arr.splice(j, 1)
j--
}
}
console.log(arr)
既然想到了用循环进行元素对比,那么使用递归也是可以实现的
function fn() {
arr.sort((a, b) => a - b)
for (var j = 0; j < arr.length; j++) {
if (arr[j] == arr[j + 1]) {
arr.splice(j, 1)
fn()
}
}
return arr
}
console.log(fn())
2.for in遍历对象
- 思路:创建一个空对象,遍历数组,将其动态的往对象中添加属性名,再把属性名取出来放入到一个新的数组当中
var obj = {}
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = 'abc' //动态的往obj中添加属性名 属性值为abc
}
var newArr = []
for (var k in obj) {
newArr.push(k * 1)
}
console.log(newArr)
3.indexOf 数组索引
- 思路:创建一个新的数组,利用循环将原数组中的元素添加到新的数组当中,期间利用if判断,若新数组中不存在该元素则将其加入到新数组中
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
}
console.log(newArr)
4.set
- set : 值的集合。特点:不能包含重复的元素
- 思路:将数组加入到set集合中
var set = new Set()
for (var i = 0; i < arr.length; i++) {
set.add(arr[i])
}
var newArr = new Array(...set) // ...扩展运算符
console.log(newArr)
//简写 console.log([...new Set(arr)])
扩展:有兴趣的小伙伴可以利用console.time()和console.timeEnd()分别统计这几种方法的耗时,总结出耗时最短的方法
本文含有隐藏内容,请 开通VIP 后查看