我的思路两线段交点就是两条线段相等的时候,也就是这个点既满足line1又满足line2。所以我们要先求出这两条线段所在直线的方程式。因为给了两个点,所以我们想到用斜截式(y=kx+b)来求出直线的方程式。然后求出交点。再判断这个点是否在两条线段上(即判断求出的x坐标是否在x1和x2,x3和x4之间)。因为斜截式不满足k=0(即垂直于x轴时)。所以要在k=0时加一个判断。大致流程设交点坐标为(a,b)求出两线段所在直线的方程式(需求k1、b1、k2、b2) –> 将(a,b)代入方程利用与k1、b1、k2、b2的关系求出(a,b) –> 判断特殊情况k=0 –> 判断(a,b)是否在两条线段上 –> 返回结果let line1 = [{x1:0,y1:1},{x2:0,y2:-1}];let line2 = [{x3:0,y3:-1},{x4:2,y4:1}];function point(line1,line2){ // 解构赋值取得 x1,y1,x2,y2,x3,y3,x4,y4 let [{x1,y1},{x2,y2}] = line1; let [{x3,y3},{x4,y4}] = line2; // 利用公式推导出 k、b和x、y的关系。 let k1 = (y1-y2)/(x1-x2); let b1 = y1 - (k1x1); let k2 = (y3-y4)/(x3-x4); let b2 = y3 - (k2x3); // a、b 为交点坐标 let a; let b; // 判断 k=0 时 if(x1==x2){ k1,b1 = 0; a = x1; b = k2a + b2; } if(x3==x4){ k2,b2 = 0; a = x3; b = k1a + b1; } // 判断 交点 是否在两条线段上 if(((a>x1&&a<x2)||(a<x1&&a>x2)||a==x1||a==x2)&&((a>x3&&a<x4)||(a<x3&&a>x4)||a==x3||a==x4)&&x1!=x2&&x3!=x4){ a = (b2-b1)/(k1-k2); b = k1*a + b1; } // 返回结果 let str; if(a!==undefined&&b!==undefined){ str = 交点为(${a},${b}) }else if((k1==k2)&&(b1==b2)&&(((x1==x3)&&(x2==x4))||((x1==x4)&&(x2==x3)))){ str = “两线段重合” }else if(k1==k2){ str = “两线段平行” }else{ str = “两线段不相交” } return str;}console.log(point(line1,line2))可能有些繁琐,希望有简单方法的可爱可以提出来。