我如何使这个输出更小更整洁的字符串?

How would I make this output a smaller more neat string?

我一直在摆弄 googles API,我正在尝试创建一个终端命令,告诉我离某物有多远以及到达那里需要多长时间。 我遇到的问题是当我 运行:

var axios = require('axios');

var config = {
    method: 'get',
    url: 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=Washington%2C%20DC&destinations=New%20York%20City%2C%20NY&units=imperial&key=AIzaSyCbwuhNvOJQrYWnLRF6WjzJeOcnhYYfpZA',
    headers: {}
};

axios(config)
    .then(function(response) {
        console.log(JSON.stringify(response.data.rows));
    })
    .catch(function(error) {
        console.log(error);
    }); 

现在正在输出:

[{"elements":[{"distance":{"text":"225 mi","value":361918},"duration":{"text":"3 hours 52 mins","value":13938},"status":"OK"}]}]

我希望输出格式显示如下:

you are 225 miles or 3 hours 52  mins away

我如何使输出看起来像第二个提供的示例?

response.data.rows 是一个 JSON 对象。 JSON.stringify() 将其转换为您不需要的字符串 - 您需要对象。

如果不进行字符串化,可以用response.data.rows[0].elements[0].distance.text获取距离字符串,用response.data.rows[0].elements[0].duration.text

获取时间

你可以试试这个,但我假设你是按这个顺序接收数据的

我建议您也添加 null 检查。

let data = [{
  "elements": [{
    "distance": {
      "text": "225 mi",
      "value": 361918
    },
    "duration": {
      "text": "3 hours 52 mins",
      "value": 13938
    },
    "status": "OK"
  }]
}];

let firstElement = data[0].elements[0];

let constructedString = `You are ${firstElement.distance.text} or ${firstElement.duration.text} away`;

console.log(constructedString);

您可以使用以下 one-liner:

var data = [{"elements":[{ "distance": {"text": "225 mi", "value": 361918}, "duration": {"text": "3 hours 52 mins", "value": 13938}, "status": "OK"}]}];
console.log(`you are ${ data[0].elements[0].distance.text} or ${data[0].elements[0].duration.text} away`);