题目一:移除数组中给定的元素
思路:
因为题目上要求在给定的arr数组上进行操作,所以,我们部门创建新的数组来装移除元素后的其他元素,我们可以找其他的方法,这里我用的splice方法,我们点出来后可以看到:splice(Start:number,deleteCount?:number),即从Start:number起,删除deleteCount?:number个元素,看到这里我们就会有思路了!首先遍历数组,判断与给定相等的元素的时候,从i处删除一个元素,这样后面的元素就会跑到前面,我们就可以再删除与给定相等的元素,就可以在原数组上操作,移除与给定相等的元素后,得到其他的元素的数组!
代码展示:
function f1(item){
let arr=[1,2,2,3,4,2,2]
for (let i = 0; i < arr.length; i++) {
if (item==arr[i]){
arr.splice(i,1) //splice(Start:number,deleteCount?:number)
i--; //因为每次删除一个元素后,后面的元素的下标就会-1,但是我们查找的时候,循环让i+1,所以我们只能会找到下一个元素的下标
//例如,当我们删除第二个元素后,后面的元素,即原始数组的第三个元素就会变为第二个,我们这时i变为了3,就不会再与改变后的数组第二个元素比较,导致这个元素不会被移除
}
}
for (let a of arr) {
console.log(a); //遍历数组
}
}
f1(2)
题目二:.查找数组中重复出现的元素
思路:首先我们要查找出去重后的元素数组,将去重后的数组,再次遍历,拿出来每个元素与初始数组进行比较,如果相等,就将该元素的次数+1,比较完,我们就可以得到所有的元素与去重后数组比较后的相等的次数,如果次数大于1,就说明该元素在原始数组中存在的不止一次,就将这个元素输出!
代码展示:
<script>
//去重
let arr=[1,2,4,4,3,3,1,5,3];
let removal=new Array(arr.length)
for (let i = 0; i < arr.length; i++) {
let flag = false
for (let n of removal) {
if (n == arr[i]) {
flag = true //如果相等,变为true
break
}
}
if (!flag) {
removal.push(arr[i]) //将去重的结果重新装进一个数组中
}
}
for (let n of removal) { //遍历去重的数组
count(n); //调用函数,并将去重的数组中的元素作为参数传给函数
}
function count(x) { //创建一个函数
let count=0; //定义一个累加的次数
for (let a of arr) { //遍历初始的数组
if(a==x){ //如果去重的数等于初始的数组中的元素,就将该数次数+1
count++;
}
}
if(count>1){ //判断如果每个数的累加次数大于1时,说明该数在数组中是存在重复的
console.log(x); //输出
}
}
</script>