zoukankan      html  css  js  c++  java
  • 两种方法直接删除数组中特定值的项(JavaScript)

    一、问题详情:
    这里写图片描述
    直接删除意为原数组需要被改变,而不是得到另一个数组。
    二、JavaScript实现

    (一)巧用数组的push( )、shift( )方法

    	function del(arr,num) {
    			var l=arr.length;
    		    for (var i = 0; i < l; i++) {
    			  	if (arr[0]!==num) { 
    			  		arr.push(arr[0]);
    			  	}
    			  	arr.shift(arr[0]);
    		    }
    		    return arr;
    		}
    		var a=[3,2,3,445,3,3,3,1,3];
    		console.log(del(a,3));
    

    这种方法非常巧妙,将不与特定值相等的项移到数组最后存起来,再删除当前的第一项。经过 l 次操作之后,只剩下存入数组后方的那些项。

    (二)递归调用方法

    function del(arr,num) {
    			arr.forEach(function (item,index,array) {
    				if (item===num) {
    					arr.splice(index,1);
    				}
    			});
    			if (arr.indexOf(num)!==-1) del(arr,num);
    		}
    		var a=[3,2,3,445,3,3,3,1,3];
    		del(a,3);
    		console.log(a);
    
    function del(arr,num) {
    			for(var p in arr){
    				if (arr[p]===num) {
    					arr.splice(p,1);
    				}
    			}
    			if (arr.indexOf(num)!==-1) del(arr,num);
    		}
    		var a=[3,2,3,445,3,3,3,1,3];
    		del(a,3);
    		console.log(a);
    

    以上两种方法都是采用递归的思想,第一次调用forEach或者for···in之后,并没有清除干净,因此递归调用del函数直到清除干净;

  • 相关阅读:
    Cocos2d-JS中的Sprite精灵类
    Cocos2d-JS中的精灵菜单和图片菜单
    Cocos2d-JS中的文本菜单
    SpringMVC01
    xml文件
    MyEclipse保存文件时 自动格式化代码! 不包括文档注释
    MyEclipse修改servlet模版
    java05 选择结构
    ssh注解开发
    使用socket实现聊天功能
  • 原文地址:https://www.cnblogs.com/twodog/p/12134756.html
Copyright © 2011-2022 走看看