如何从 Javascript 中的数组中删除重复项?

Posted

技术标签:

【中文标题】如何从 Javascript 中的数组中删除重复项?【英文标题】:How to Remove Duplicates From Array in Javascript? 【发布时间】:2015-01-25 06:42:32 【问题描述】:

这里我有两个多行文本框,并在两个文本框中输入一些数据,例如 txt1 1,1,1,2,2,2,3 txt2 1,2,3,4,5, 当我按下过滤器按钮时,它会在第三个文本框中显示数据,例如 txt3 4,5(两个文本框都有这些数字) 我的sn-p是

<script type="text/javascript">
    function GetDistinctElements(source,source1, target)            
        var input = source.value.trim().replace(';', ',').split(',');
        var input1 = source1.value.trim().replace(';', ',').split(',');           
        var Array = input.concat(input1);
        var distinctArray = Array.filter(function (item, pos)               
            return Array.indexOf(item) == pos;
        );           
        target.value = distinctArray.join(',');
    
</script>

我的控件是

<table border="0" align="left">
    <tr>
        <td>Enter Numbers:</td>
        <td> <asp:TextBox ID="txt1" TextMode="MultiLine" runat="server"></asp:TextBox></td>
        <td>Enter Numbers:</td>
        <td><asp:TextBox ID="txt2" TextMode="MultiLine" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
        <td><input type='button' value='Get Distinct Items' onclick='GetDistinctElements(<%= txt1.ClientID %>,<%= txt2.ClientID %>,<%= txt3.ClientID %>); return false;' /></td>
        <td><asp:TextBox ID="txt3" TextMode="MultiLine" runat="server"></asp:TextBox></td>
    </tr>
</table>

当我尝试这个 sn-p 时,我没有得到预期的输出。

【问题讨论】:

***.com/questions/4343746/… ***.com/questions/2523436/… “我没有得到预期的输出。” - 你可能更清楚预期的输出实际上是什么。您是否得到了其他输出,或者浏览器的开发控制台中出现错误? txt1: 1,1,1,2,2,2,3 txt2: 1,2,3,4,5,当我按下过滤器按钮时,它会在第三个文本框中显示数据,如 txt3:1 ,2,3(两个文本框 【参考方案1】:

替换这个:

var Array = input.concat(input1);
var distinctArray = Array.filter(function (item, pos)               
    return Array.indexOf(item) == pos;
);           

通过这个:

var input2 = input.concat(input1);
input2.sort(function(a,b)return a-b);
var prev= null;
var distinctArray = input2.filter(function (item, pos)               
    if (item == prev)
      return false;
    
    prev = item;
    return true;
);           

【讨论】:

,感谢您的回复...但它在第三个文本框中显示两个文本框值,例如 t1:1,2,3.t2:1,3,4,5 t3:1,2,3 ,1,3,4,5 通过添加input2.sort();修复了这个问题【参考方案2】:

我得到了答案

 function GetDistinctElements(source,source1, target) 
        // Get the items in your input
        var input = source.value.trim().replace(';', ',').split(',');
        var input1 = source1.value.trim().replace(';', ',').split(',');           
        input1 = input1.filter(function (val) 
            return input.indexOf(val) == -1;
        );
        // Output the result in  target area
        target.value = input1.join(',');

【讨论】:

以上是关于如何从 Javascript 中的数组中删除重复项?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Perl 中的数组中删除重复项?

使用 JavaScript 从数组中删除所有重复项 [重复]

如何从 javascript 变量中删除对象/数组?

javascript 从数组中删除重复项

javascript 从数组中删除重复项

从数组中删除重复的对象