두 부분으로 나뉜 질문입니다. 첫 번째 부분은 아래의 함수를 임의의 수의 배열을 허용하도록 변환하는 것입니다.getIntersect (arr1, arr2)로 변환 Javascript 함수는 여러 개의 인수와 JQuery로 변환합니다.
function getIntersect(arr1, arr2) {
var r = [], o = {}, l = arr2.length, i, v;
for (i = 0; i < l; i++) {
o[arr2[i]] = true;
}
l = arr1.length;
for (i = 0; i < l; i++) {
v = arr1[i];
if (v in o) {
r.push(v);
}
}
return r;
}
이 기능 스 니펫은이 게시물의 Ian 및 Jeffrey에게 감사드립니다. 해시 테이블을 사용하는 성능은 밑줄 유틸리티 벨트 및 JQuery와 풍부한 배열 플러그인의 인덱스 방법보다 훨씬 더 있기 때문에 http://www.falsepositives.com/index.php/2009/12/01/javascript-function-to-get-the-intersect-of-2-arrays/
나는 관심이 있어요. 나는 Jquery가 jQuery.inArray() 메소드를 가지고 있다는 것을 알고 있지만, 문서는 인덱스를 사용하는 것처럼 들리지만, 1 만개 이상의 요소가있는 배열을 정렬하는 최적의 성능 솔루션을 찾고있다.
제 질문의 두 번째 부분은 Jquery friendly입니다. 아래의 JSON 객체를 가정하면서, Jquery를 사용하여 1) arrays1-5 만 선택하고 함수에로드 한 다음 하나의 배열을 반환합니다.
{
"Container1": {
"Array1": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"Array2": ["Sunday", "Thursday", "Friday", "Saturday"],
"Array3": ["Sunday", "Friday", "Saturday"],
"Array4": ["Sunday", "Friday", "Garbage"],
"Array5": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"ArrayOthers1": ["1", "6", "8", "5"],
"ArrayOthers2": ["1", "6", "8", "5"],
"ArrayOthers3": ["1", "6", "8", "5"]
}
}
위의 대답은 [ "일요일", "금요일"] 배열 =입니다
이것은 훌륭한 대답입니다! Jquery 파트에 대해 자세히 설명해 주시겠습니까? 문자열을 만들어 먹일 수 있습니까? 예 : "getIntersectN ("container "+"MyArrayName, container. "+"MySecondArrayName "); – Ariesto
@Ariesto '문자열을 만들고 먹이면'무슨 뜻인지 모르겠다. – dgilland
나는 하나의 문자열을 만드는 다른 정보를 반복하여이 배열 목록을 생성하는 상황에 처해있다 .Varray MyArrayChoices = "container.test [Array1], container.test [Array54] "그런 다음 문자열 변수와 eval()을 사용하여 다음과 같이 함수를 실행할 수 있습니다. getIntersectN (eval (MyArrayChoices)) 거의 작동하지만 eval은 마지막 array54에서만 작동하며 Array1에 대한 결과를 무시하거나 그것은 당신의 기능에 문자열로 모두 제출하기 때문에입니다. 내가 뭘하려고하는지 명확하게 정리합니까?이 주석은 형식을 지정하기가 매우 어렵습니다. ( – Ariesto