在数组中显示特定的对象值而不是单独显示?

时间:2014-10-01 15:20:05

标签: javascript jquery arrays json object

我使用ajax调用从Googles地方api检索数据,我使用for / in循环开始提取信息。我正在寻找的信息记录到控制台,但我不能让它以数组的形式显示我想要它。

现在我在请求名称时获取名称列表,这是JSON对象中的参数。有没有办法让它进入一个数组,所以我可以随机选择数组中的一个值?

此时它返回我的数据的方式,当我运行一个脚本来拉随机字符串时,它会在搜索我的JSON对象时从最后一个值中拉出一个随机字母。

这是我的代码。不确定我是否清楚地解释了自己,但这是我能说出我想做的最好的事情。感谢。

// **GLOBAL VARIABLES** //

// Chosen Restaurant display area
var display = document.getElementById('chosenVenue');
// Grab button
var button = document.getElementById('selectVenue');
// Sample Array that gets queried
var venueData = ["McDonalds", "Burger King", "Wendys"];



// Grab JSON data from Google
$(document).ready(function(){
$.ajax({
  url: 'hungr.php', // Send query through proxy (JSONP is disabled for Google maps)
  data: { requrl: "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7484,-73.9857&radius=800&sensor=false&keyword=restaurants,food&key=AIzaSyBkCkXIHFjvqcqrRytSqD7T_RyFMNkR6bA&callback=?"}, // URL to query WITH parameters
  dataType: "json",
  type: "GET", // or POST if you want => update php in that case
  success: function (data) {
     // Traverse the array using for/in loop using i as var
     for (var i in data.results) {
         var results = data.results[i];
        var nameResults = results.name;
            console.log(nameResults);
        var typesResults = results.types;
            console.log(typesResults);
        var vicinityResults = results.vicinity;
            console.log(vicinityResults);

     };      


      // On button click, randomly display item from selected array
      button.addEventListener('click', function () {
        console.log('clicked');
        display.style.display = 'block';
        //display.innerHTML = nameResults[Math.floor(Math.random() * nameResults.length)];
        display.innerHTML = nameResults.toString() + "<br />"  + vicinityResults.toString();
      });



      console.log('It is working');

  },
     error: function (request, status, error) {
    console.log('It is not working');
}
});
    });

1 个答案:

答案 0 :(得分:0)

  

现在我在请求名称时获取名称列表,这是JSON对象中的参数。有没有办法让它进入一个数组,所以我可以随机选择数组中的一个值?

使用push方法和非局部变量:

this.nameResults = this.nameResults ? this.nameResults.push(results.name) : [];

然后用Math.random方法引用它:

this.randName = function(){ return this.nameResults[Math.random() * this.nameResults.length | 0] };

<强>参考