首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > JAVA认证 >

JavaScript过滤数组中重复元素

2009-03-02 
从旧数组中取元素,一个个添加到新数组中,在添加的时候,与添加过的元素比较,如果相同,则不添加。

    我是个JS初学者,我即将要说的这个方法也是大部分人都能想到的:
  从旧数组中取元素,一个个添加到新数组中,在添加的时候,与添加过的元素比较,如果相同,则不添加。
  首先定义两个数组:
  var arrA = new Array(1,23,43,64,1,23,5,8,3,5,9);
  var arrB = getNewArray(arrA);  // 过滤函数
  然后开始编写函数getNewArray()
  function getNewArray(receiveArray)
  {
  var arrResult = new Array();  //定义一个返回结果数组.
  for (var i=0; i<receiveArray.length; i++)
  {
  if (/*在这里做i元素与所有判断相同与否, 调用函数check(arrResult, receiveArray[i]);*/)
  {
  arrResult.push(receiveArray[i]); // 添加该元素到新数组。如果if内判断为false(即已添加过),则不添加。
  }
  }
  return arrResult;
  }
  然后编写判断函数check()
  function check(receiveArray, checkItem)
  {
  var index = -1;  // 函数返回值用于布尔判断
  for (var i=0; i<receiveArray.length; i++) 
  {
  if (receiveArray[i]==checkItem) 
  {
  index = i;
  break;
  }
  }
  return index;
  }
  则在函数getNewArray()中的if应该写成:
  check(arrResult, receiveArray[i]) == -1
  好了,我们的目的达到了,合并以上代码即可。
  var arrA = new Array(1,23,43,64,1,23,5,8,3,5,9);
  var arrB = getNewArray(arrA);  // 过滤函数
  function getNewArray(receiveArray)
  {
  var arrResult = new Array();  //定义一个返回结果数组.
  for (var i=0; i<receiveArray.length; i++)
  {
  if (check(arrResult, receiveArray[i]) == -1) //在这里做i元素与所有判断相同与否
  {
  arrResult.push(receiveArray[i]); // 添加该元素到新数组。如果if内判断为false(即已添加过),则不添加。
  }
  }
  return arrResult;
  }
  function check(receiveArray, checkItem)
  {
  var index = -1;  // 函数返回值用于布尔判断
  for (var i=0; i<receiveArray.length; i++) 
  {
  if (receiveArray[i]==checkItem) 
  {
  index = i;
  break;
  }
  }
  return index;
  }  

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行