工作編號:http://jsfiddle.net/sXbRK/的JavaScript:創建新的陣列動態
我有不同的線段,每個人都有自己的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(/ *線段重疊* /) { //創建新數組,添加重疊 combine [a] = new Array(overlappers) ; } ' ...類似的東西 – JsusSalv