나는 각 차원에 임의의 수의 요소가있는 2 차원 배열을 가지고 있으므로 [m] [n] 배열이지만 두 번째 차원 길이 (n
)는 가변적입니다.배열의 교차점 찾기가 작동하지 않습니까?
두 번째 차원의 각 요소에는 숫자가 들어 있으며 모든 차원에 하나의 숫자 만 존재합니다.
따라서, 예를 들어, 배열이 될 수 있습니다 명심
[
[
126,
131,
138,
139,
140,
143
],
[
126,
201
]
]
이
m
이 될 수 있음을> 다음
2. 내 코드입니다 :
var theArray = [
[126, 131, 138, 139, 140, 143],
[126, 201]
];
for(var i = 0; i < theArray.length; i++) // loop through each array of numbers
{
$.each(theArray[i], function(index, value) // loop through all of the numbers in this array
{
var nextArray = (i+1<theArray.length?theArray[i+1]:theArray[0]);
if($.inArray(value, nextArray) == -1) // if this number is not in the next array
{
console.log("removing index: " + index + ", value: " + value);
theArray[i].splice(index, 1); // remove the number from the array
}
});
}
console.log(theArray);
이 출력은 이것이다 :
removing index: 1, value: 131
removing index: 2, value: 139
removing index: 3, value: 143
removing index: 4, value: undefined
removing index: 5, value: undefined
removing index: 1, value: 201
Array
[
[
126,
138,
140,
],
[
126
]
]
JSFIDDLE : http://jsfiddle.net/hDL8K/
당신이 볼 수 있듯이, 그것은 거의 작동하지만이 값이 제거되지 않습니다.
요소가 제거되기 때문에 이것은 루프와 함께 증가하는 루프와 배열 크기가 줄어들면서 foreach
루프에있는 index
과 관련이 있을지 모르지만 확실하지 않습니다.
왜 이것이 작동하지 않으며 어떻게 해결할 수 있습니까?
당신이 밖으로 요소를 접합하기 때 때문에 작동하지 않습니다 종종를 반복하고있는 배열을 수정 나머지 요소에 대한 모든 색인이 아래로 이동합니다. – Barmar
안녕하세요, 원래 배열을 수정하지 않는 솔루션을 추가했습니다. –