牛客JavaScript算法题-移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回

题目描述: 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回

解决办法
1. splice()
  • splice会改变arr数组的长度,arr.length改变;
  • 每移除一个元素,后面的就会前移,例如:移除第一个arr[1]=2后,arr数组变为[1, 2, 3, 4, 2, 2],原来的arr[2]=2就会变成arr[1]=2
function removeWithoutCopy(arr, item) {
    
    
   for(var i = 0; i < arr.length; i++){
    
    
       if(item == arr[i]){
    
    
           arr.splice(i,1);
           i--;	//执行i--,才能保证不会漏掉某个元素
       }
   }
   return arr;
}
var arr = [1, 2, 2, 3, 4, 2, 2];
document.write(removeWithoutCopy(arr,2));
2. indexOf() + splice()
  • arr.indexOf(item):表示查找arr数组里的item元素
  • indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到匹配的字符串则返回 -1。
 function removeWithoutCopy(arr, item) {
    
    
   while (arr.indexOf(item) !== -1) {
    
    	//直接查找item,查找成功进入循环
        arr.splice(arr.indexOf(item), 1);
    }
    return arr;
}
var arr = [1, 2, 2, 3, 4, 2, 2];
document.write(removeWithoutCopy(arr,2));

猜你喜欢

转载自blog.csdn.net/weixin_45663697/article/details/110353969