2014-11-17 6 views
1

array을 다른 배열 값과 비교. 아래에 값이있는 array이 있습니다.다른 배열 값과 배열 비교

a = [1,5,6,7,3,8,12]; 

다음은 확인해야 할 array입니다.

b = [3,5,7]; 

나는 acontainsb의 가치 여부를 확인해야합니다. 나는 number에서 통과 할 때

function contains(n){ 
    for(var i=0; i<this.length; i++){ 
     if(this[i] == n) 
      return true; 
    } 
    return false; 
} 

a.contains("12"); //would work 
a.contains(b) //check for an array values? 

위의 코드는 사람이 내가 array을 통과하고 효율적으로 다른 array과 비교 얼마나 말해 줄 수, 잘 작동합니다.

+0

http://stackoverflow.com/questions/7837456/comparing-two-arrays-in-javascript –

+0

당신이 적어도 사용하지 않는 이유는'.indexOf()'배열의 값을 찾기 위해 ? – jfriend00

답변

1

contains 기능이 Array.prototype (사용자가 this이므로)에 있다고 가정합니다.

주어진 경우 b을 반복하고 모든 값을 테스트하려면 .every()을 사용할 수 있습니다.

function contains(n){ 
 
    for(var i=0; i<this.length; i++){ 
 
     if(this[i] == n) 
 
      return true; 
 
    } 
 
    return false; 
 
} 
 

 
Array.prototype.contains = contains; 
 

 
var a = [1,5,6,7,3,8,12]; 
 

 
var b = [3,5,7]; 
 

 
var has_all = b.every(function(val) { 
 
    return a.contains(val); 
 
}); 
 

 
alert(has_all);

.every()

있어서 장애가 발생한 모든 발견된다면 그렇지 false, true를 반환 값에 제 단락. 당신이 실제로 함수의 대신 사용할 수 있도록


ECMScript 5 .indexOf() 방법이있다. 이 기능을 사용하려면 inorder를

var a = [1,5,6,7,3,8,12]; 
 

 
var b = [3,5,7]; 
 

 
var has_all = b.every(function(val) { 
 
    return a.indexOf(val) !== -1; 
 
}); 
 

 
alert(has_all);

+0

한 가지 질문은 왜 -1을 확인합니까? – UnderTaker

+1

@UnderTaker : 일치하는 것이 발견되지 않으면'.indexOf()'는'-1'을 반환하므로 반환 값의 타입은 여전히 ​​'null'과 같은 숫자가 아닙니다. –

2
  1. 당신은 당신의 배열을 확장해야합니다.
  2. in this.length; 기능이 아니라 배열을 의미합니다.

아래 코드를 사용해보십시오.

Array.prototype.equals = function (array, strict) { 
    if (!array) 
     return false; 

    if (arguments.length == 1) 
     strict = true; 

    if (this.length != array.length) 
     return false; 

    for (var i = 0; i < this.length; i++) { 
     if (this[i] instanceof Array && array[i] instanceof Array) { 
      if (!this[i].equals(array[i], strict)) 
       return false; 
     } 
     else if (strict && this[i] != array[i]) { 
      return false; 
     } 
     else if (!strict) { 
      return this.sort().equals(array.sort(), true); 
     } 
    } 
    return true; 
} 



var arr1 = [1, 2, 3, 4]; 
var arr2 = [2, 1, 4, 3]; // Loosely equal to 1 
var arr3 = [2, 2, 3, 4]; // Not equal to 1 
var arr4 = [1, 2, 3, 4]; // Strictly equal to 1 

arr1.equals(arr2);   // false 
arr1.equals(arr2, false); // true 
arr1.equals(arr3);   // false 
arr1.equals(arr3, false); // false 
arr1.equals(arr4);   // true 
arr1.equals(arr4, false); // true 

나는 그것이 기능에게 당신이 그것을 필요로 모든 경우를 재사용 할 수

1

를 사용하여 프로토 타입 속성을 도움이되기를 바랍니다.

Array.prototype.contains = function (n) { 
    var s; 
    for(s in this){ 
     if (this.hasOwnProperty(s) && n.indexOf(this[s]) !== -1) { 
     return true; 
     } 
    } 
    return false; 
}; 

var a = [1, 5, 6, 7, 3, 8, 12], 
    b = [1, 2, 11]; 
console.log(a.contains(b));