2015-11-21 48 views
2

我有一個變量,它是一個對象數組,每個對象都有點。變量是:使用javascript從對象數組中找到象限

var points = [ 
{x: 1, y: 1 }, 
{x: -1, y: 1 }, 
{x: -1, y: -1 }, 
{x: 1, y: -1 }, 
{x: 2, y: 2 }, 
{x: -1, y: 2 }, 
{x: -1, y: -2 }, 
{x: 1, y: -2 }, 
{x: 1, y: 6 }, 
{x: -1, y: 4 }, 
{x: -3, y: -1 }, 
{x: 1, y: -1 }, 
{x: 10, y: 1 }, 
{x: -1, y: 11 }, 
{x: -1, y: -1 }, 
{x: 1, y: -1 }]; 

現在我想找到給定象限的最大向量。

+1

'vector'和'quadrant'是什麼意思? - 你只有'points' –

+0

你試過了什麼? –

+0

指定象限和矢量的含義,因爲您可以設置一個for循環,然後使用條件語句來驗證選定的象限,以及矢量的含義。 – ZachPerkitny

回答

1

您可以使用此:

function max_from_quadrant(x, y) { 

    var max_magnitude = 0; 
    var maxIndex = -1; 

    for (var i = 0; i < points.length; i++) { 

     var point = points[i]; 
     if (point.x*x < 0 || point.y*y < 0) 
      continue; 

     var magnitude = point.x*point.x + points.y*point.y; 

     if (magnitude > max_magnitude) { 
      max_magnitude = magnitude; 
      max_index = i; 
     } 

    } 

    return max_index > -1 ? points[max_index] : false; 

} 

兩個數字參數只是傳遞與要查找的最大匹配象限跡象爲了您的點的集合這給:

max_from_quadrant(-1, -1) // {x: -3, y: -1} 
max_from_quadrant(-1, 1) // {x: -1, y: 11} 
max_from_quadrant( 1, -1) // {x: 1, y: -2} 
max_from_quadrant( 1, 1) // {x: 10, y: 1} 
+0

'Math.pow(Math.abs ...'有點多餘......只是數學。 pow會做...另外,爲了速度,比較x * x + y * y(不使用'Math.pow')和'sqrt'一旦找到最大值,並且如果量級甚至沒有返回,則不需要for sqrt at all:p –

+0

@Paulpro能否請你解釋一下 – amark

+0

@JaromandaX我根據你的建議更新了它 – Paulpro

相關問題