【问题标题】:Javascript JSON for each return only first object string每个只返回第一个对象字符串的 Javascript JSON
【发布时间】:2020-01-20 09:03:37
【问题描述】:

我试图从数组中只返回第一个对象的 (that) 字符串。在我的示例中,当我循环时,它将仅返回第三个选项中的字符串。

我希望它只返回第二个选项,例如第一个对象名为那个

我认为它会像这样工作:

data[i].that[0]

但它只会返回第一个字母。

var data = [{  
   "this":"first",
   "that":"second",
   "that":"third",
},{  
    "this":"first",
    "that":"second",
    "that":"third",
}]

data.forEach(function (value, i) {
     console.log(data[i].that)
});

当前:

third
third

预期:

second
second

【问题讨论】:

  • 对象中不能有重复的键,最后一个获胜。在这种情况下,third 覆盖 second

标签: javascript arrays json


【解决方案1】:

您的数据建模错误。 JavaScript 对象中不能有重复的键。

但是,您可以将其改造成以下内容,以实现您想要的(使用 data[i].that[0] 调用它):

var data = [{  
   "this":"first",
   "that": ["second", "third"]
},{  
    "this":"first",
    "that":["second", "third"]
}]

data.forEach(function (value, i) {
     console.log(data[i].that[0])
});

【讨论】:

  • 在我的真实世界数据中 是一条评论,并且对于添加的每个新评论,都会添加一个新的重复键。
  • 然后将它们添加到comments 数组中,就像我在示例中所做的那样。你正在做的事情不会奏效,所以你需要考虑改变你对数据建模的方式。
  • 首先,非常感谢您的帮助,我明白为什么它现在不起作用了。不幸的是,我无法重组数据,我只能使用我所拥有的。我可以尝试其他任何解决方法吗?我在stackoverflow.com/questions/30842675 阅读了一些关于解决方案的信息,其中用户提到了一种将数据解析为文本并以字符串形式返回的方法。不幸的是我不能使用 jQuery,所以我不能尝试这个例子。如果您知道如何用香草 JS 重写它,我将非常感激。
  • 您从哪里获得这些数据? @JoeBerg
  • 我在另一个团队工作的地方使用它,但我的团队也可以从其中一些数据中受益。另一个团队以不同的方式使用这些数据,因此目前没有我们可以使用的脚本。在我们的团队中,我们需要检查 cmets 是否包含与我们处理的项目相关的一些 ID。所以我将提到的数据传递到一个表中,并检查其中一个 cmets 是否包含我们的一个 ID。 ID 将始终列在第一条评论中,所以如果我可以同时获得两个 cmets 或只获得第一个,它对我们有用。
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
相关资源
最近更新 更多