유형 강제 변환이 필요하지 않은 경우 (의 사용으로 인해 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)
, 모든 요소가 거기에 있음)