使用javascript

时间:2015-11-21 06:27:34

标签: 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 个答案:

答案 0 :(得分: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}