这里我有两个多行文本框,并在两个文本框中输入一些数据 TXT1 1,1,1,2,2,2,3 TXT2 1,2,3,4,5, 当我按下“过滤器”按钮时,它会显示第三个文本框中的数据 txt3 4,5(两个文本框都有这些数字) 我的片段是
<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 :(得分: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;
});
答案 1 :(得分: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(',');