我有一个变量,它是一个对象数组,每个对象都有点。变量是:
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 }];
现在我想找到给定象限中的最大矢量。
答案 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}