我正在尝试使用jquery比较2个数组并从中删除重复项。
这是我的代码。这个逻辑是正确的吗?
var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];
var newArray = [];
var index1, index2;
$.each(list1, function(i, value)) {
index1 = $.inArray(list1[i]);
index2 = $.inArray(newArray[i]);
if (index2 == -1) {
newArray.push(list2[i]);
}
}
预期产出:
[3,5,9,8]
答案 0 :(得分:4)
试试这个
<script type="text/javascript">
var arr1=[6,7,3,4,1,2];
var arr2=[2,4,6,5,1,9,8,7,8];
$(document).ready(function(){
var newArray=$.merge($(arr1).not(arr2).get(),$(arr2).not(arr1).get());
console.log(newArray);
});
</script>
它给出了
[ 3, 5, 9, 8,8 ]
使用$ .each,$ .inArray和.push的的另一个答案 试试这个
var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];
var newArray = [];
$.each(list1, function(i, value){
if($.inArray(value,list2)==-1){
newArray.push(value);
}
});
$.each(list2, function(i, value){
if($.inArray(value,list1)==-1){
newArray.push(value);
}
});
newArray=$.unique(newArray);
console.log(newArray);
它给出了
[ 3, 5, 9, 8]
答案 1 :(得分:1)
Concat数组并过滤两个:
var list1=[6,7,3,4,1,2];
var list2=[2,4,6,5,1,9,8,7,8];
function removeDuplicates(arr1, arr2) {
return [...new Set(arr1.concat(arr2).filter(e => ! (arr2.includes(e) && arr1.includes(e))))];
}
console.log(removeDuplicates(list1, list2));
&#13;
答案 2 :(得分:1)
这是一种类似于你的方式......
var list1=[6,7,3,4,1,2];
var list2=[2,4,6,5,1,9,8,7,8];
var list = list1.concat(list2);
var uniqueList = [];
$.each(list , function(i, el){
if($.inArray(el, uniqueList) === -1)
{
uniqueList .push(el);
}
});
答案 3 :(得分:1)
试试这个fiddle
var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];
var newArray = [];
$.each(list1, function(i, value) {
if ($.inArray(value, list2) == -1) {
newArray.push(value);
}
});
$.each(list2, function(i, value) {
if ($.inArray(value, list1) == -1) {
newArray.push(value);
}
});
console.log(newArray);
按要求使用$ .each,$。inArray和.push