2015-10-29 42 views
1

我想知道如何使用下面的代碼實現上述操作。因此,例如,當數據加入時,我將在新數組的索引中包含類似[2.62,460]的結果。當用戶單擊按鈕時,下面的兩個函數都通過事件偵聽器調用。任何幫助將不勝感激,謝謝。JS將2個數組和它們各自的值從單個索引合併到1個數組中的單個索引中

var mouseDistance = new Array(); 
var timers = new Array(); 
var combinedresults = new Array(); 

//THIS FUNCTION CALCULATES THE DISTANCE MOVED 
function printMousePos(e) { 
    var lastSeenAt = { 
     x: null, 
     y: null 
    }; 
    var cursorX = e.clientX; 
    var cursorY = e.clientY; 

    var math = Math.round(Math.sqrt(Math.pow(lastSeenAt.y - cursorY, 2) + 
     Math.pow(lastSeenAt.x - cursorX, 2))); 
    mouseDistance.push(math); 
} 

function stopCount() { 
    clearTimeout(t); 
    timer_is_on = 0; 
    timers.push(t); 
} 
+0

'var lastSeenAt = {x:null,y:null};'我造成了麻煩。將其移出該功能。否則,你只需要計算'Math.pow(null - somenumer,2)'。 – fuyushimoya

+0

謝謝,雖然實際上我想知道如何去實現上面的邏輯在這個問題上。 – user1610834

+0

「prevX,prevY,totalTravelled」在哪裏,看不到它們在代碼中的用處。 – fuyushimoya

回答

1

您可以將lastSeenAt的init移出函數。並在函數結尾分配新值。

要得到合併結果,請使用較短的mouseDistancetimers,並將數據推送到combinedresults應該可以工作。

var mouseDistance = new Array(); 
var timers = new Array(); 
var combinedresults = new Array(); 
// Init with both is null. 
var lastSeenAt = { 
    x: null, 
    y: null 
}; 

//THIS FUNCTION CALCULATES THE DISTANCE MOVED 
function printMousePos(e) { 
    var cursorX = e.clientX; 
    var cursorY = e.clientY; 

    // Don't calculate when x, y is null, which is the first time. 
    // Or you can give lastSeen some other initValue rather than (null, null). 
    if (lastSeenAt.x !== null) { 
    var math = Math.round(Math.sqrt(Math.pow(lastSeenAt.y - cursorY, 2) + 
     Math.pow(lastSeenAt.x - cursorX, 2))); 
    mouseDistance.push(math);  
    } 

    // Keep the x,y value. 
    lastSeenAt.x = cursorX; 
    lastSeenAt.y = cursorY; 
} 

function stopCount() { 
    clearTimeout(t); 
    timer_is_on = 0; 
    timers.push(t); 
} 

// get combinedresults 
function getCombinedResult() { 
    // Get the shorter length. 
    var length = Math.min(mouseDistance.length, timers.length); 
    var i; 

    // 
    for (i = 0; i < length; ++i) { 
    combinedresults[i] = [timers[i], mouseDistance[i]]; 
    } 
} 
+0

謝謝你。儘管我真正需要的是我如何將定時器數組中的一個索引中的數據與mouseDistance數組中的一個索引中的數據合併爲一個名爲combinedresults的新數組中的一個索引。 – user1610834

+0

你的意思是,你想讓你的函數也做'combinedresults [n] = timers [n] * mouseDistance [n]'? – fuyushimoya

+0

是的,如果計時器數組的值爲2.62,並且mousedistance數組的值爲500,我想將這兩個數據放到一個數組中,所以類似[2.62,500],謝謝! – user1610834

相關問題