javascript中删除指定数组中指定的元素的代码

  函数如下:

  

复制代码 代码如下:

  foreach = function (obj, insp){

  if(obj== null && obj.constructor != Array){

  return [];

  }

  //obj是要处理的数组,obj==null 表示对象尚未存在;obj.constructor != Array 表示对象obj的属性的构造函数不是数组;

  //constructor属性始终指向创建当前对象的构造函数。两个条件均满足,则返回空数组[];

  //下面对constructor属性作进一步了解。

  var obj= [1, 2, 3, 4]; // 等价于 var obj= new Array(1, 2, 3, 4);

  console.log(obj.constructor === Array); // 返回true 表明obj的构造函数为Array;

  var foo= function() { }; // 等价于 var foo = new Function();

  console.log(foo.constructor === Function); // 返回true 表明foo的构造函数为Function;

  var obj = new Foo(); //由构造函数实例化一个obj对象

  console.log(obj.constructor === Foo); // 返回true 表明obj的构造函数为Foo;

  -----------------------------------------------------------------------------------------------------------

  var i=0, len = obj.length, r = [];

  while(i<len){

  var x = insp(obj[i], i);

  if (x !== null) {

  r[r.length] = x;

  }

   i++;

  }

  return r;

  };

  //对数组对象obj进行遍历,参数insp代表一个方法或函数,用于对obj中的每个元素进行操作。给参数insp传递了两个参数,obj[i]代表数组中的每一个元素值;并将函数参数insp赋给x,最终将x值赋给数组r。

  -----------------------------------------------------------------------------------------------------------

  比如我们要遍历数组中的每一个元素,引用foreach函数

  var testArray = [1,2,3,4,5,1,2,'w'];

  foreach(testArray, function(i){

  alert(i)

  });

  -----------------------------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------------------------

  我们用另一个函数来删除指定数组中指定的元素;

  

复制代码 代码如下:

  ArrayWithout = function(){

  if (arguments.length < 2) {

  // Arguments 是特殊的对象,代表函数的参数.

    return arguments.length == 1 ? arguments[0] : null;

  }

  var results = [];

   var aa = arguments[0];

  //将第一参数赋给数组aa;

  if (aa === null || aa.constructor != Array) {

    return null;

  //如果aa不存在或者不是数组,那么返回null;

  }

  if(arguments[1].constructor == Array){

  // 如果第二个参数是数组,则将参数数组中对应的每个元素都删除;

    var args = [];

    args[0] = aa;

  //aa = arguments[0] 将aa赋给数组args,作为其第一个元素值;

    foreach(arguments[1], function(v, i){

  //引用了函数foreach,来对数组arguments[1]中每个元素进行操作,

      args[i+1] = v;

  // v代表数组arguments[1]中每个元素值,将它们一一赋值给args[1],args[2]...,而args[0]=arguments[0];

   });

   }

   else{

    args = arguments;

  //如果第二个参数不是数组,则直接将参数数组赋给args;

  }

  for(var i = 0;i < aa.length; i ++){

    var isWithout = true;

    for(var j = 1; j < args.length ; j ++){

      if(aa[i] == args[j]){

       isWithout = false;

       break;

  // 切记j是从1开始的,因为args的第一元素args[0]是arguments[0],正是我们要处理的的原数组,等同于数组aa;

  让要删除的各个元素与原数组aa中的某一元素进行逐次比较,如果相同,break 跳出循环; isWithout返回false,所以也不再执行下面的 results.push(aa[i]);

    }

   }

     if (isWithout) {

       results.push(aa[i]);

        //所谓删除原理,就是将原数组各元素与要删除的元素进行比较,保留与要删除的元素不相同的元素并赋给一个新的数组results;

    }

  }

  return results;

  //返回已经删除了指定元素的数组;

  };

  // 引用ArrayWithout的例子

  var testArray = [1,2,3,4,5,1,2,'w'];

  var result = ArrayWithout(testArray, 1, 3);

  //var result = ArrayWithout(testArray, [1, 4]);

  alert(result) //[2,4,5,2]

  源代码如下:

  

复制代码 代码如下:

  foreach = function (obj, insp){

  if(obj == null && obj.constructor != Array){

  return [];

  }

  var i=0, len = obj.length, r = [];

  while(i<len){

  var x = insp(obj[i], i);

  if (x !== null) {

  r[r.length] = x;

  }

  i++;

  }

  return r;

  };

  ArrayWithout = function(){

  if (arguments.length < 2) {

  return arguments.length == 1 ? arguments[0] : null;

  }

  var results = [];

  var aa = arguments[0];

  if (aa === null || aa.constructor != Array) {

  return null;

  }

  if(arguments[1].constructor == Array){

  var args = [];

  args[0] = aa;

  foreach(arguments[1], function(v, i){

  args[i+1] = v;

  });

  }

  else{

  args = arguments;

  }

  for(var i = 0;i < aa.length; i ++){

  var isWithout = true;

  for(var j = 1; j < args.length ; j ++){

  if(aa[i] == args[j]){

  isWithout = false;

  break;

  }

  }

  if (isWithout) {

  results.push(aa[i]);

  }

  }

  return results;

  };

  var testArray = [1,2,3,4,5,1,2];

  foreach(testArray, function(i){

  alert(i)

  })

  var result = ArrayWithout(testArray, 1, 3);

  //var result = ArrayWithout(testArray, [1, 3]);

  alert(result) //[2,4,5,2]