【问题标题】:Finding the number of elements in a json object查找 json 对象中的元素个数
【发布时间】:2017-04-15 10:01:26
【问题描述】:

我不知道如何使用 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 循环为这个元素对象工作)。

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

【问题讨论】:

  • 您在寻找length 属性吗? shows.length,顺便说一下,等于data.length。旁注:这不是“json 对象”。 JSON 是一种可以转换为数据的文本格式。你有一个对象数组。
  • This is how my object is structed - 所以,它是一个对象数组……数组的长度是 data.length
  • 我预计缺少一些代码,因为您使用的是 int i = 0(这甚至不是有效的 JavaScript),但随后引用了 data[j],这会导致错误。跨度>
  • 我真的把这个问题搞砸了,我将把它链接到一个希望实际上有意义的新问题

标签: javascript json iteration javascript-objects


【解决方案1】:

给定

[A]任何其他方式来访问“shows”内的元素数量(每个都有 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 循环中引用 data[j]。

【讨论】:

  • 有道理,谢谢。抱歉,这个问题太令人困惑了,我把我的 java/javascript 弄混了,应该直接粘贴我的代码。但是由于某种原因,shows.length 返回零,而 shows[0].artist 返回一个真实的字符串(这意味着我假设有超过 0 个元素)。我不知道这是否是范围问题,因为我将对象填充到一个单独的函数中,然后在另一个函数中调用 shows.length?但是然后我可以正确调用 show[0].artist 所以这让我感到困惑(data.length 也不一样,因为我有一个过滤某些数据的 if 语句)
  • 检查你用来填充数组的 for 循环;您在上面的代码中使用i,在循环中使用j ...这可能会产生奇怪的结果。
【解决方案2】:

根据您的代码,shows 是一个数组。数组有一个长度属性。
shows.length

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多