작업 코드를 작성 : http://jsfiddle.net/sXbRK/자바 스크립트 : 새로운 배열을 동적으로
내가 여러 선분을 가지고 있으며 각각 고유의 ID가 있습니다. 나는 서로 어떤 것이 교차하는지 압니다.
이제 중복되는 선분의 ID를 새로운 배열로 푸시해야합니다.
서로 교차하지 않는 선분은 상관하지 않습니다.
서로 교차하는 선 세그먼트 ID를 자체 배열로 푸시하려면 어떻게해야합니까?
// New arrays of overlapping IDs
e.g. Array A = [1,2,3];
Array B = [7,8,12];
Array C = [14,15];
는 여기에 지금까지 가지고 jsFiddle에 작업 진행 코드를 확인하는 것을 잊지 마세요 내용은 다음과 같습니다
function cross(ls)
{
var len = ls.length;
for(var a=0; a < len - 1; a++)
{
for(var b=a+1; b < len; b++)
{
var A = ls[a],
B = ls[b],
combine = [],
overlappers = [];
if
(
(A.start <= B.start && (A.start + A.end) >= B.start)
||
(A.start <= A.start && (B.start + B.end) >= A.start)
)
{
// Add overlapping elements to arrays
overlappers.push(A.id,B.id);
// Create arrays for line segments that overlap each other
combine[a] = new Array(overlappers);
document.write('Array' + [a] + ' ==> ' + combine[a] + '<br />');
}
}
}
}
// Test data
var lineSegments = [
{id:'1', start:0, end:50},
{id:'2', start:0, end:50},
{id:'3', start:0, end:50},
{id:'4', start:100, end:50},
{id:'5', start:200, end:50},
{id:'6', start:300, end:50},
{id:'7', start:900, end:50},
{id:'8', start:900, end:50},
{id:'9', start:600, end:50},
{id:'10', start:700, end:50},
{id:'11', start:800, end:50},
{id:'12', start:900, end:50},
{id:'13', start:1000, end:50},
{id:'14', start:1100, end:50},
{id:'15', start:1100, end:50}
];
// Execute function
cross(lineSegments);
몇 가지 아이디어를 도와주세요. 고맙습니다!
나는 당신의 질문은 여기에 무엇 슈어 있지 않다. 어떤 선이 교차하는지 확인하거나 도움이 필요합니까? 배열에 무엇을 갖고 싶니? – suknic
겹치는 선분의 ID를 아주 새로운 배열로 푸시하고 싶습니다. 새로운 배열은 서로 겹치는 선분의 ID 만 포함합니다 – JsusSalv
'if (/ * line segments overlap * /) { // 새 배열 만들기, 오버랩 자 추가 combine [a] = new Array (overlappers) ; } ... 이런 식으로 – JsusSalv