유형 강제 변환이 필요하지 않은 경우 (의 사용으로 인해 indexOf) 다음과 같이 시도 할 수 있습니다.
var arr = [1, 2, 3];
var check = [3, 4];
var found = false;
for (var i = 0; i < check.length; i++) {
if (arr.indexOf(check[i]) > -1) {
found = true;
break;
}
}
console.log(found);
어디 arr대상 항목이 포함되어 있습니다. 마지막으로 found두 번째 배열이 대상과 일치하는 항목이 하나 이상 있는지 표시합니다 .
물론, 당신이 사용하고 싶은 것으로 숫자를 바꿀 수 있습니다-예와 같이 문자열은 좋습니다.
그리고 특정 예에서 결과는 true두 번째 배열 3이 대상에 존재 하기 때문 입니다.
최신 정보:
다음은 기능을 구성하는 방법입니다 (이전과 약간의 변경 사항이 있음).
var anyMatchInArray = (function () {
"use strict";
var targetArray, func;
targetArray = ["apple", "banana", "orange"];
func = function (checkerArray) {
var found = false;
for (var i = 0, j = checkerArray.length; !found && i < j; i++) {
if (targetArray.indexOf(checkerArray[i]) > -1) {
found = true;
}
}
return found;
};
return func;
}());
데모 : http://jsfiddle.net/u8Bzt/
이 경우 targetArray클로저에서 하드 코딩되는 대신 인수로 전달 되도록 함수를 수정할 수 있습니다 .
UPDATE2 :
위의 솔루션이 효과가 있고 읽을 수 있지만 (더 나은) 읽을 수는 있지만 설명 된 개념을 처리하는 "더 나은"방법은 약간 다르게 행동하는 것입니다. 위의 솔루션의 "문제" indexOf는 루프 내부에서 다른 어레이의 모든 항목에 대해 대상 어레이가 완전히 반복되도록하는 것입니다. 이것은 "조회"(맵 ... JavaScript 객체 리터럴)를 사용하여 쉽게 "고정"될 수 있습니다. 이를 통해 각 배열에 대해 두 개의 간단한 루프가 가능합니다. 예를 들면 다음과 같습니다.
var anyMatchInArray = function (target, toMatch) {
"use strict";
var found, targetMap, i, j, cur;
found = false;
targetMap = {};
// Put all values in the `target` array into a map, where
// the keys are the values from the array
for (i = 0, j = target.length; i < j; i++) {
cur = target[i];
targetMap[cur] = true;
}
// Loop over all items in the `toMatch` array and see if any of
// their values are in the map from before
for (i = 0, j = toMatch.length; !found && (i < j); i++) {
cur = toMatch[i];
found = !!targetMap[cur];
// If found, `targetMap[cur]` will return true, otherwise it
// will return `undefined`...that's what the `!!` is for
}
return found;
};
데모 : http://jsfiddle.net/5Lv9v/
이 솔루션의 단점은 값이 (암시 적으로) 문자열로 변환되고 조회 맵의 키로 설정되기 때문에 숫자와 문자열 (및 부울) 만 (올바르게) 사용할 수 있다는 것입니다. 이것은 리터럴이 아닌 값에 대해 정확하거나 적합하지 않거나 쉽게 수행되지 않습니다.
for루프를 사용하고 대상 배열을 반복 하십시오 . 모든 요소가 현재 배열 내에 포함 된 경우 (usecurrent.indexOf(elem) !== -1), 모든 요소가 거기에 있음)