예를 들어, 배열이 2d이고 다음과 같이 보입니다 :`var arr = [[ "1", "2", "3"], "4", "5"], [ "6"]] '항목이 다차원 배열의 임의의 차원에있는 경우
$.inArray("4", arr);
또는 arr.indexOf("4")
을 실행하면 배열에 -1이 표시됩니다. 그러나 내부 배열 중 하나에 있습니다.
배열이나 배열의 요소 인 배열에 있는지 어떻게 알 수 있습니까? 즉, 배열의 모든 차원에서.
예를 들어, 배열이 2d이고 다음과 같이 보입니다 :`var arr = [[ "1", "2", "3"], "4", "5"], [ "6"]] '항목이 다차원 배열의 임의의 차원에있는 경우
$.inArray("4", arr);
또는 arr.indexOf("4")
을 실행하면 배열에 -1이 표시됩니다. 그러나 내부 배열 중 하나에 있습니다.
배열이나 배열의 요소 인 배열에 있는지 어떻게 알 수 있습니까? 즉, 배열의 모든 차원에서.
당신은 할 수 있습니다 :
var arr = [["1", "2", "3"], ["4", "5"], ["6"]];
if(arr.join().split(',').indexOf("4") != -1){
// do something.
}
indexOf
배열을 평평하고 간단하게 사용 .join()
은 배열을 쉼표로 구분 된 요소로 변환하고 .split(',')
은 평평한 배열 인 새 배열을 만듭니다. 그래서 .indexOf()
가 작동합니다.
더 나은 방법으로 설계된 솔루션은 배열에서 값을 검색하는 재귀 함수를 만드는 것입니다.
더 편리한 솔루션은 또한이 예와 같이 배열은 두 가지 수준의 깊은 경우
var arr = [["1", "2", "3"], ["4", "5"], ["6"]];
var flattened = Array.prototype.concat.apply([], arr);
alert(flattened.indexOf("4"));
재귀 ......... – adeneo
@adeneo 그래서 배열에 요소가 발견되면 배열을 호출합니까? 하지만 어떻게하면 내부 배열이 var에 할당되지 않았는지에 대한 inArray 또는 인덱스를 수행합니까? – MrGuru
'$ .map'을 사용하여 배열을 먼저 평평하게 해보십시오. –