数组塌陷问题 数组去重的方法 统计数组中出现的次数

数组塌陷问题

需求:把数组中的每一个元素都删掉

思路  通过for循环 和splice()对数组中元素进行删除处理

const arr=['a','b','c']

for (let i=0; i<=arr.length;i++){
arr.splice(i,1)
}
consloe.log(arr)

打印结果是

 如上所示 出现的问题 :应该删除了所有的元素可以漏掉了 一个元素‘b’

这个问题就叫做splice()的数组塌陷问题

分析这个问题产生的原因 

第一次循环是 i =>0 删除了第0个元素 删除了'a' 剩余元素为['b','c']

第二次循环  i=>1 删除了 第一个元素  删除了'c',剩余元素为'b'

解决方法一

执行体内i--

const arr=['a','b','c']

for (let i=0; i<=arr.length;i++){
arr.splice(i,1)
i--
}
consloe.log(arr)

解决方法二

数组长度-1 且i--

const arr=['a','b','c']

for (let i=arr.length-1; i>=0;i--){
arr.splice(i,1)
}
consloe.log(arr)

数组去重的方法

方法一  双重for循环

const arr=['a','b','c','b','a','b']

for(let i=0;i<arr.length;i++){
  for(let j=i+1 ;j<arr.length; j++){
 arr.splice(j,1)
  j-- 
 }
}
console.log(arr)

统计数组中出现的次数

利用key的唯一性解决

const arr=['a','b','c','b','a','b']
const o={}

 for(let i0;i<arr.length;i++){
  if(o[arr[i]]){
 arr[i]++
   }else{
    o[arr[i]]=1
     }
 }
console.log(o)

求最大值的方法

const o ={a:3,b:2,c:1}
let max =0
for(let atter in o){
  if(o[atter] > max){
  char=atter
  max=o[atter]
  }
}
console.log(`出现最多的字符是${char},出现了${max}次`)

猜你喜欢

转载自blog.csdn.net/weixin_68531033/article/details/126216422
今日推荐