比较两个数组并使用javascript删除相同的值 [英] Compare two array and remove if same value using javascript

查看:79
本文介绍了比较两个数组并使用javascript删除相同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个数组,名为 arr ar 。假设 ar 有7个元素, arr 有6个元素。如果元素在两者中都相同,我想删除一个元素,否则将其分配给一个新变量。到目前为止我有这个:

I have two arrays, named arr and ar. Suppose ar has 7 element and arr has 6 elements. I want to remove an element if it is the same in both, otherwise assign it to a new variable. I have this so far:

var arr = new Array(); // Elements are 65,66,67,68,69,70
var newID = new Array();  
var ar = new Array(); // 64,65,66,67,68,69,70

if (ar.length != arr.length) {
                for (var i = 0; i < arr.length; i++) {
                    for (var j = 0; j < ar.length; j++) {
                        if (arr[i] == ar[j]) {
                            delete ar[i];
                            arr.splice(i, 1);
                            break;
                        }
                        newID = ar[i];
                    }
                }
                for (var i = 0; i < ar.length; i++) {
                    newID = ar[i];
                }

这不能正常工作,因为它会与未定义的值进行比较。请帮我纠正。

This does not work properly as it will compare with an undefinded value. Please help me correct it.

推荐答案

这里还有一个使用 reduce

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [1, 3, 5, 7, 9];


var result = arr1.reduce(function (prev, value) {

    var isDuplicate = false;
    for (var i = 0; i < arr2.length; i++) {
        if (value == arr2[i]) {
            isDuplicate = true;
            break;
        }
    }
    
    if (!isDuplicate) {
        prev.push(value);
    }
    
    return prev;
    
}, []);


alert(JSON.stringify(result.concat(arr2)));

已编辑

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [1, 3, 5, 7, 9];


arr2 = arr2.reduce(function (prev, value) {

    var isDuplicate = false;
    for (var i = 0; i < arr1.length; i++) {
        if (value == arr1[i]) {
            isDuplicate = true;
            break;
        }
    }
      
    if (!isDuplicate) {
        prev.push(value);
    }
       
    return prev;
        
}, []);


alert(JSON.stringify(arr2));

这篇关于比较两个数组并使用javascript删除相同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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