我有一个计算从4个目的地到一个单一起点的里程的表单。提交后,我可以在新行上显示显示原点和到每个目的地的距离的文本,例如:
英国马盖特到英国考文垂:3小时13分钟177英里从英国布莱顿到英国考文垂:2小时41分钟158英里英国布里斯托尔到英国考文垂:1小时49分钟108英里英国伯明翰到英国考文垂:31分钟21.8英里
我想创建这个信息的数组,以便我可以在其他函数中调用它。例如,我只想要目的地和里程,所以像这样:
{"马尔盖特,UK"=比;177、英国布莱顿=比;英国布里斯托尔;=比;108、伯明翰,英国=比;21.8}
下面是我用来创建for循环的代码:
function calcDistance(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
outputDiv.innerHTML += origins[i] + ' to ' + destinations[j]
+ ': ' + results[j].distance.text + ' in '
+ results[j].duration.text + '<br>';
}
}
}
}
您可以尝试创建一个数组const distances = []
,然后在内部for循环中将所需的信息推入其中
...
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
distances.push([origins[i], results[j].distance.text])
...
}
或者您可以使用regex
从提交的表单文本中提取信息
const distinations =
'Margate, UK to Coventry, UK: 177 mi in 3 hours 13 mins Brighton, UK to Coventry, UK: 158 mi in 2 hours 41 mins Bristol, UK to Coventry, UK: 108 mi in 1 hour 49 mins Birmingham, UK to Coventry, UK: 21.8 mi in 31 mins'
const cities = distinations.match(/b(?:(?!Coventry)w)w+, w+/g)
const distances = distinations.match(/(?<=: )d+/g)
const result = []
for (let index in cities) {
const city = cities[index]
const distance = distances[index]
result.push({
city,
distance
})
}
console.log(result)