根据提示存储坐标并计算距离
Store coordinates from prompt and calculate the distance
我致力于坐标之间的距离计算,并且构建了一些可以正常工作的东西。
var pointsCoordinates = [[5,7],[5,8],[2,8],[2,10]];
function lineDistance(points) {
var globalDistance = 0;
for(var i=0; i<points.length-1; i++) {
globalDistance += Math.sqrt(Math.pow( points[i+1][0]-points[i][0] , 2 ) + Math.pow( points[i+1][1]-points[i][1] , 2 ));
}
return globalDistance;
}
console.log(lineDistance(pointsCoordinates));
我想稍微改进一下,发送一个提示来存储用户发送的坐标。
示例:
alert(prompt("send me random coordinates in this format [,] and I will calculate the distance))
我想存储这些坐标并用我的函数计算距离。
我知道我必须使用推送但是它不起作用,有人可以帮我写吗?我知道这很简单但是...我做不到
非常感谢
var userPrompt = prompt("send me random coordinates");// e.g [100,2] [3,45] [51,6]
var pointsCoordinates = parseCoordinates(userPrompt);
function parseCoordinates(unparsedCoord) {
var arr = unparsedCoord.split(" ");
var pair;
for (var i = 0; i < arr.length; i++) {
pair = arr[i];
arr[i] = pair.substr(1, pair.length - 2).split(",")
}
return arr;
}
function lineDistance(points) {
var globalDistance = 0;
for(var i = 0; i < points.length - 1; i++) {
globalDistance += Math.sqrt(Math.pow(points[i + 1][0] - points[i][0], 2) + Math.pow(points[i+1][1]-points[i][1], 2));
}
return globalDistance;
}
console.log(pointsCoordinates);
console.log(lineDistance(pointsCoordinates));
工作和测试代码。从提示中获取坐标并将其传递给 lineDistance
函数并将传递的字符串转换为数组。
function lineDistance(points) {
var globalDistance = 0;
var points = JSON.parse(points); // convert entered string to array
for(var i=0; i<points.length-1; i++) {
globalDistance += Math.sqrt(Math.pow( points[i+1][0]-points[i][0] , 2 ) + Math.pow( points[i+1][1]-points[i][1] , 2 ));
}
return globalDistance;
}
var pointsCoordinates = prompt("send me random coordinates in this format [,] and I will calculate the distance");
if (coordinates != null)
console.log(lineDistance(coordinates)); //[[5,7],[5,8],[2,8],[2,10]]
else
alert("Entered value is null");
希望对您有所帮助。
如果您使用 prompt
,则不需要用 alert
包装它。
此外,prompt
将 return 带有字符串值,因此您需要 解析 您要返回的数据(除非您用字符串就可以了)
在这种情况下,由于您想取回一个 点数组 ,解析可能比仅转换值更复杂。我的建议是使用 JSON.parse()
来解析输入数组
在您的情况下,您可以使用此代码
var coordString = prompt("send me random coordinates in this format [,] and I will calculate the distance");
try {
var coordinates = JSON.parse(coordString);
// now check that coordinates are an array
if ( coordinates.constructor === Array ) {
// this might still fail if the input array isn't made of numbers
// in case of error it will still be caught by catch
console.log(lineDistance(coordinates));
}
} catch(error) {
// if something goes wrong you get here
alert('An error occurred: ' + error);
}
如果您想知道还可以用它们做什么,我建议您阅读 MDN docs for prompt()。
此外,如果您想从文本字符串中解析值,the docs for JSON.parse()
会很有用。
我致力于坐标之间的距离计算,并且构建了一些可以正常工作的东西。
var pointsCoordinates = [[5,7],[5,8],[2,8],[2,10]];
function lineDistance(points) {
var globalDistance = 0;
for(var i=0; i<points.length-1; i++) {
globalDistance += Math.sqrt(Math.pow( points[i+1][0]-points[i][0] , 2 ) + Math.pow( points[i+1][1]-points[i][1] , 2 ));
}
return globalDistance;
}
console.log(lineDistance(pointsCoordinates));
我想稍微改进一下,发送一个提示来存储用户发送的坐标。
示例:
alert(prompt("send me random coordinates in this format [,] and I will calculate the distance))
我想存储这些坐标并用我的函数计算距离。
我知道我必须使用推送但是它不起作用,有人可以帮我写吗?我知道这很简单但是...我做不到
非常感谢
var userPrompt = prompt("send me random coordinates");// e.g [100,2] [3,45] [51,6]
var pointsCoordinates = parseCoordinates(userPrompt);
function parseCoordinates(unparsedCoord) {
var arr = unparsedCoord.split(" ");
var pair;
for (var i = 0; i < arr.length; i++) {
pair = arr[i];
arr[i] = pair.substr(1, pair.length - 2).split(",")
}
return arr;
}
function lineDistance(points) {
var globalDistance = 0;
for(var i = 0; i < points.length - 1; i++) {
globalDistance += Math.sqrt(Math.pow(points[i + 1][0] - points[i][0], 2) + Math.pow(points[i+1][1]-points[i][1], 2));
}
return globalDistance;
}
console.log(pointsCoordinates);
console.log(lineDistance(pointsCoordinates));
工作和测试代码。从提示中获取坐标并将其传递给 lineDistance
函数并将传递的字符串转换为数组。
function lineDistance(points) {
var globalDistance = 0;
var points = JSON.parse(points); // convert entered string to array
for(var i=0; i<points.length-1; i++) {
globalDistance += Math.sqrt(Math.pow( points[i+1][0]-points[i][0] , 2 ) + Math.pow( points[i+1][1]-points[i][1] , 2 ));
}
return globalDistance;
}
var pointsCoordinates = prompt("send me random coordinates in this format [,] and I will calculate the distance");
if (coordinates != null)
console.log(lineDistance(coordinates)); //[[5,7],[5,8],[2,8],[2,10]]
else
alert("Entered value is null");
希望对您有所帮助。
如果您使用 prompt
,则不需要用 alert
包装它。
此外,prompt
将 return 带有字符串值,因此您需要 解析 您要返回的数据(除非您用字符串就可以了)
在这种情况下,由于您想取回一个 点数组 ,解析可能比仅转换值更复杂。我的建议是使用 JSON.parse()
来解析输入数组
在您的情况下,您可以使用此代码
var coordString = prompt("send me random coordinates in this format [,] and I will calculate the distance");
try {
var coordinates = JSON.parse(coordString);
// now check that coordinates are an array
if ( coordinates.constructor === Array ) {
// this might still fail if the input array isn't made of numbers
// in case of error it will still be caught by catch
console.log(lineDistance(coordinates));
}
} catch(error) {
// if something goes wrong you get here
alert('An error occurred: ' + error);
}
如果您想知道还可以用它们做什么,我建议您阅读 MDN docs for prompt()。
此外,如果您想从文本字符串中解析值,the docs for JSON.parse()
会很有用。