Compare 2 array's elements against each other and return count JavaScript

后端 未结 3 688
花落未央
花落未央 2021-01-14 17:45

I have 2 arrays that I need to compare against each other and return the count of the same.

Example: compare array1 [abcd] against array2 [adce]. Return would be 2,1

3条回答
  •  孤独总比滥情好
    2021-01-14 18:07

    If I interpret correctly, you want to find a count of elements that are at the same, exact position and a count of elements that are present in both arrays but not at the same position.

    var array1 = ['a', 'b', 'c', 'd'];
    var array2 = ['a', 'd', 'c', 'e'];
    var largerArray = (array1.length > array2.length)? array1 : array2;
    var shorterArray = (largerArray == array1)? array2 : array1;
    var count = {
                 exactPosition: 0, //elements at the exact position 
                 wrongPosition: 0 /*elements present in both arrays but at the wrong position*/
                };
    //loop the larger array
    for(var i = 0; i < largerArray.length; i ++) {
        if(array1[i] == array2[i]) {
            count.exactPosition ++;
        }
        //find elements at the wrong position in `largerArray`
        else if(largerArray.indexOf(shorterArray[i]) != -1) {
            count.wrongPosition ++;
        }
    }
    
    alert(count.exactPosition);
    alert(count.wrongPosition);
    

    This isn't a rock-solid approach and would not work for duplicates.

    Array.indexOf

    Fiddle: Fiddle

提交回复
热议问题