Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
problem with Math.max(ARRAY)-Math.min(Array) in a object

i've trouble to get width/height of a triangle shape in object recording points/coordinates. I use it to output as SVG or for CanvasRenderer2d. I tried it with a drawSVG function and the drawing is OK, it's just the width and height i've error with.

My lightened code is like this(discarding no relevant properties like line weight, colors...):

function Triangle(name, arrayX, arrayY){
return {
 name:name,
 x:arrayX,
 y:arrayY,
 width:Math.max(this.x)-Math.min(this.x),
 height:Math.max(this.y)-Math.min(this.y),
 getWidth:function(){return Math.max(this.x)-Math.min(this.x) },
 getHeight:function(){return Math.max(this.x)-Math.min(this.x) }
}

}

let tri=Triangle('tri', [15, 42, 84], [10, 37, 48])
console.log(tri.width)//-- NaN
console.log(tri.getWidth())//-- NaN

/** i've tried using ... this way and having same issue:
width:Math.max(...this.x)-Math.min(...this.x),
 height:Math.max(...this.y)-Math.min(...this.y),
 getWidth:function(){return Math.max(...this.x)-Math.min(...this.x) },
 getHeight:function(){return Math.max(...this.x)-Math.min(...this.x) }
 let tri=ShapeTriangle('tri', [15, 42, 84], [10, 37, 48])
 console.log(tri.width)//-- NaN
 console.log('tri.getWidth => '+tri.getWidth())//-- NaN
  */


 /**-----------------------------------------------
* more complete "real" code use extended object (inheritance) like this
 * but i don't think it's where is the trouble is
 
function PolygonShape(arrayX,arrayY){//--Abstract
 return {primitive:'PolygonShape',
  type:'PolygonShapeAbstract',
  name:null,
  x:arrayX,y:arrayY,
  component:new Map(),
  list:[]
//-- others methods such move coordinates and hit tests
}
}

function ShapeTriangle(name, x, y, x1, y1,x2, y2){
 let tri=PolygonShape([x,x1,x2],[y,y1,y2])
 tri.type='PolygonShapeTriangle'
 tri.name=name
 tri.width=Math.max(this.x)-Math.min(this.x)
 tri.getWidth=function(){return Math.max(this.x)-Math.min(this.x)}
 tri.heigth= Math.max(this.y)-Math.min(this.y)
 tri.getHeight=function(){return Math.max(this.y)-Math.min(this.y)}
return tri
}*/

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You have 2 issues with your code.

  1. You are calling this.x which is not defined, try using arrayX and arrayY.

  2. You need to use the spread operator, Math.max and Math.min functions require multiple arguments not a single argument.

Try the following:

function Triangle(name, arrayX, arrayY){
  return {
    name:name,
    x:arrayX,
    y:arrayY,
    width:Math.max(...arrayX)-Math.min(...arrayX),
    height:Math.max(...arrayY)-Math.min(...arrayY),
    getWidth:function(){return Math.max(...arrayX)-Math.min(...arrayX) },
    getHeight:function(){return Math.max(...arrayX)-Math.min(...arrayX) }
  }
}

let tri=Triangle('tri', [15, 42, 84], [10, 37, 48])
console.log(tri.width)

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!