如何删除阵列重复 - 的JavaScript [英] How to remove duplicates from array - javascript

查看:76
本文介绍了如何删除阵列重复 - 的JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:结果
  取下阵列复制

你能帮我了。我有这片code ..

Could you please help me out. I have this piece of code..

   <html>
  <head>
  <title>test</title>
  <script>

  var array = new Array();

  function insert(val){
  array[array.length]=val;
  }

  function show() {
  var string="";
  for(i = 0; i < array.length; i++) {
  string =string+array[i]+' , ';
  }
  if(array.length > 0)
 document.getElementById('result').innerHTML = string;
  }

  function removeDuplicateElement(arrayName)
            {
                var newArray=new Array();
                label:for(var i=0; i<arrayName.length;i++ )
                {   
                    for(var j=0; j<newArray.length;j++ )
                    {
                        if(newArray[j]==arrayName[i]) 
                        continue label;
                    }
                    newArray[newArray.length] = arrayName[i];
                }
                return newArray;
                document.getElementById('result1').innerHTML = newArray;
            }
  </script>

  </head>

  <body>
  <h2>Demo</h2>
  <form name="form1">
  <input id="userinput" type="text" name="Input"/>
  <input type="button" Value="Add" onclick="insert(getElementById('userinput').value),show();"/>
  <input type="button" Value="Substract" onclick="removeDuplicateElement(array);"/>
  </form>
   <textarea style="border:1px solid #B3B3B3; width:218px;" rows="2" cols="30" type="text"  id="result"></textarea>
   <textarea style="border:1px solid #B3B3B3; width:218px;" rows="2" cols="30" type="text"  id="result1"></textarea>
  </body>
</html>

和我是想实现删除重复的功能,我发现在互联网上没有任何成功。 (见下文),我在做什么错了?

And I was trying to implement the remove duplicate function I found on the internet without any success. (see below) What am I doing wrong?

function removeDuplicateElement(arrayName)
{
  var newArray=new Array();
  label:for(var i=0; i<arrayName.length;i++ )
  {  
      for(var j=0; j<newArray.length;j++ )
      {
          if(newArray[j]==arrayName[i]) 
          continue label;
      }
      newArray[newArray.length] = arrayName[i];
  }
  return newArray;
}

感谢您!

推荐答案

有几个(希望)有用code提示:

A few (hopefully) useful code tips:


  1. 请不要使用新的Array(),除非你想一个数组,这是一个固定大小(异常)。使用 [] 代替。

  2. arr.push(项目)是一回事改编[arr.length] =项目,除了更好。

  3. 显示该环函数可以使用实现 array.join('')

  1. Don't use new Array() unless you want to make an array that's a fixed size (unusual). Use [] instead.
  2. arr.push(item) is the same thing as arr[arr.length] = item, except better.
  3. That loop in your show function can be accomplished using array.join(' , ').

总之,实际的问题是在这里:

Anyway, the actual problem is here:

return newArray;
            document.getElementById('result1').innerHTML = newArray;

收益退出函数。它看起来像你想取出收益部分。

return exits the function. It looks like you want to take out the return part.

...但无论如何,这code是pretty浪费。我会写为:

... but anyway, that code is pretty wasteful. I would write it as:

function removeDuplicateElements(array) {
    document.getElementById('result1').innerHTML =
        array.filter(function(item, index) {
            return array.indexOf(item) !== index;
        });
}

...假设支持现代浏览器阵列#的indexOf 阵列#过滤器

这篇关于如何删除阵列重复 - 的JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆