查找json对象中的元素数

时间:2016-11-30 22:15:02

标签: javascript json iteration javascript-objects

我无法弄清楚如何使用JavaScript查找JSON对象中包含的元素数量。这就是我的对象的结构:

var shows = [];
//make http call here to api url and store in variable called 'data'
for (int i = 0; i < data.length; i++) {
  var element = {
    "location": {
      "latitude": data[j].venue.latitude,
      "longitude": data[j].venue.longitude
    },
    "artist": data[j].artists[0].name,
    "venue_name": data[j].venue.name,
    "date": data[j].datetime
  };
  shows.push(element);
};

因此,我可以使用shows[i].location或任何我想要访问的密钥轻松访问这些元素。但是,涵盖此主题的所有问题/答案似乎都建议使用Object.keys(shows).length来查找元素的数量(我也很难让for-each循环为这个元素对象工作)。 / p>

但是,这在我的情况下不起作用(我假设因为&#39;显示&#39;没有任何直接键)所以我只是想知道是否有任何另一种访问&#34;内部的元素数量(每个有4个键:值对)的方式显示&#34;?或者是否有另一种迭代每个元素的方法?或者,如果那是不可能的,还有另一种方法可以构建我的对象,以便更容易找到元素的数量?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

鉴于

  

[A]以其他方式访问“show”中的元素数量(每个元素有4个键:值对)。

您所说的“元素数量”是您将对象推入的数组的长度。每个推送的对象都有四个键值对。

您将使用(或在数组中)确定元素的数量(数组的长度):

var lengthOfShows = shows.length;
for (var i = 0; i < shows.length; i++) {
  var currentShow = shows[i];
  // references
  // shows[i].location
}

在您的代码中......

for (int i = 0; i < data.length; i++) {

应该......

for (var j = 0; j < data.length; j++) {

因为你在for循环中引用数据[j]。

答案 1 :(得分:0)

从您的代码中,shows是一个数组。数组具有长度属性     shows.length

可能就是你所需要的。看起来它与data.length和 该数据可能也是一个数组。