2015-01-25 5 views
-1

Здесь у меня есть два многострочные текстовые поля и ввести некоторые данные в двух текстовых как txt1 1,1,1,2,2,2,3 txt2 1,2,3,4,5, , когда я нажимаю фильтр кнопка она показывает данные в thirdtextbox как txt3 4,5 (как в текстовые поля являются имеющими эти цифры) Мой фрагмент являетсяКак удалить дубликаты из массива в Javascript?

<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> 

когда я попробовал этот фрагмент, я не получил ожидаемого результата.

+0

http://stackoverflow.com/questions/4343746/is-there- a-data-structure-like-the-java-set-in-javascript – prime

+0

http://stackoverflow.com/questions/2523436/javascript-implementation-of-a-set-data-structure – prime

+0

* «Я не получил ожидаемого результата». * - Вы можете быть немного понятнее о том, каков ожидаемый результат на самом деле. И вместо этого вы получили другой результат или ошибку в dev-консоли вашего браузера? – nnnnnn

ответ

0

Я получил ответ

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(','); 
0

Заменить это:

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; 
});   
+0

, спасибо за ваш ответ ... но он показывает два значения текстовых полей в третьем текстовом поле, таком как t1: 1,2,3.t2: 1,3,4,5 t3: 1,2,3,1,3,4 , 5 – user4491399

+0

исправлено с добавлением 'input2.sort();' – Koen

Смежные вопросы