Javascript 比较两个数组中的元素

Javascript 比较两个数组中的元素,javascript,arrays,Javascript,Arrays,我想比较数组实数的每个元素和数组编号的每个元素。如果有任何匹配项,请将它们放入数组中添加,以便我可以看到它们。在这种情况下,如果代码良好,add必须为2,3,6,10,14 <!DOCTYPE html> <html> <head> </head> <body> <script> var real=[1,2,3,4,5,6,7,8,10,14,1

我想比较数组实数的每个元素和数组编号的每个元素。如果有任何匹配项,请将它们放入数组中添加,以便我可以看到它们。在这种情况下,如果代码良好,add必须为2,3,6,10,14

    <!DOCTYPE html>
    <html>
    <head>
    </head>
        <body>
        <script>
        var real=[1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237];
        var number=[2,3,6,10,12,13,14,172,122,234];
        var add=[];
        for (k=0; k<number.length; k++)
                { 
                    for (w=0; w<real.length; w++)
                        { 
                            if (number[k]==real[w]); 
                                {
                                    add.push(number[k],real[w]);
                                }
                        };

                };
        document.write(add+"<br>");
        </script>

var real=[1,2,3,4,5,6,7,8,10,14,16233235245,2,5,7236237];
变量数=[2,3,6,10,12,13,14172122234];
var-add=[];

对于(k=0;k一个更优雅且可读的解决方案:

var matched = [];
real.forEach(function(realNum) {
    number.forEach(function(numberNum) {
        if(realNum == numberNum && matched.indexOf(realNum) === -1) {
            matched.push(realNum);   
        }                     
    });
});

更优雅、更易读的解决方案:

var matched = [];
real.forEach(function(realNum) {
    number.forEach(function(numberNum) {
        if(realNum == numberNum && matched.indexOf(realNum) === -1) {
            matched.push(realNum);   
        }                     
    });
});

下面是一个使用
Array.forEach
Array.indexOf
函数的简短解决方案:

var real = [1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237],
    number = [2,3,6,10,12,13,14,172,122,234],
    add = [];

real.forEach(function(v) {
    if (number.indexOf(v) !== -1 && this.indexOf(v) === -1) this.push(v);
}, add);

console.log(add);   // [2, 3, 6, 10, 14]

下面是一个使用
Array.forEach
Array.indexOf
函数的简短解决方案:

var real = [1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237],
    number = [2,3,6,10,12,13,14,172,122,234],
    add = [];

real.forEach(function(v) {
    if (number.indexOf(v) !== -1 && this.indexOf(v) === -1) this.push(v);
}, add);

console.log(add);   // [2, 3, 6, 10, 14]

这里有一种使用ES6的方法:

var real=[1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237];
变量数=[2,3,6,10,12,13,14,172,122,234];
var filtered=real.filter(x=>number.indexOf(x)>-1);
var unique=新集合(已过滤);

document.body.innerHTML=[…唯一];
使用ES6有一种方法:

var real=[1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237];
变量数=[2,3,6,10,12,13,14,172,122,234];
var filtered=real.filter(x=>number.indexOf(x)>-1);
var unique=新集合(已过滤);
document.body.innerHTML=[…唯一];
试试这个方法。。。 对主元素进行排序,删除重复项,并从两个数组中查找公共元素

var main = [1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237];
var compare = [2,3,6,10,12,13,14,172,122,234];

function compareNumbers(a, b) {
  return a - b;
}
console.log('Sorted Array :', main.sort(compareNumbers) );
// Sorted Array : [1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 10, 14, 16, 233, 235, 236, 237, 245]

Array.prototype.unique = function() {
    var unique = [];
    for (var i = 0; i < this.length; i++) {
        var current = this[i];
        if (unique.indexOf(current) < 0) unique.push(current);
    }
    return unique;
}    
console.log('Unique Array Elements:', main.unique() );
// Unique Array Elements: [1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 16, 233, 235, 236, 237, 245]

function commonElements(arr1, arr2) {
    var common = [];
    for (var i = 0; i < arr1.length; i++) {
        for (var j = 0; j < arr2.length; j++) {
            if (arr1[i] == arr2[j] ) {
                common.push( arr1[i] );
                j == arr2.length; // To break the loop;
            }
        }
    }
    return common;
}

console.log('Common Elements from Both Arrays : ', commonElements(main.unique(), compare.unique()) );
//Common Elements from Both Arrays :  [2, 3, 6, 10, 14]
var main=[1,2,3,4,5,6,7,8,10,14,16233235245,2,5,7236237];
var比较=[2,3,6,10,12,13,14172122234];
函数比较器(a,b){
返回a-b;
}
log('Sorted Array:',main.sort(compareNumbers));
//排序数组:[1、2、2、3、4、5、5、6、7、7、8、10、14、16、233、235、236、237、245]
Array.prototype.unique=函数(){
var-unique=[];
for(var i=0;i
试试这个方法。。。 对主元素进行排序,删除重复项,并从两个数组中查找公共元素

var main = [1,2,3,4,5,6,7,8,10,14,16,233,235,245,2,5,7,236,237];
var compare = [2,3,6,10,12,13,14,172,122,234];

function compareNumbers(a, b) {
  return a - b;
}
console.log('Sorted Array :', main.sort(compareNumbers) );
// Sorted Array : [1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 10, 14, 16, 233, 235, 236, 237, 245]

Array.prototype.unique = function() {
    var unique = [];
    for (var i = 0; i < this.length; i++) {
        var current = this[i];
        if (unique.indexOf(current) < 0) unique.push(current);
    }
    return unique;
}    
console.log('Unique Array Elements:', main.unique() );
// Unique Array Elements: [1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 16, 233, 235, 236, 237, 245]

function commonElements(arr1, arr2) {
    var common = [];
    for (var i = 0; i < arr1.length; i++) {
        for (var j = 0; j < arr2.length; j++) {
            if (arr1[i] == arr2[j] ) {
                common.push( arr1[i] );
                j == arr2.length; // To break the loop;
            }
        }
    }
    return common;
}

console.log('Common Elements from Both Arrays : ', commonElements(main.unique(), compare.unique()) );
//Common Elements from Both Arrays :  [2, 3, 6, 10, 14]
var main=[1,2,3,4,5,6,7,8,10,14,16233235245,2,5,7236237];
var比较=[2,3,6,10,12,13,14172122234];
函数比较器(a,b){
返回a-b;
}
log('Sorted Array:',main.sort(compareNumbers));
//排序数组:[1、2、2、3、4、5、5、6、7、7、8、10、14、16、233、235、236、237、245]
Array.prototype.unique=函数(){
var-unique=[];
for(var i=0;i