【问题标题】:ArrayList weird issueArrayList 奇怪的问题
【发布时间】:2018-07-05 21:06:35
【问题描述】:

我已经设置了一个名为questionsArray,我正在将一个API 的结果推送到Array,这没有问题。

如果我对数组进行硬编码,我会这样设置它。

var questions = [
  {
    "The Eiffel Tower is located where in Paris?": [
      "Champ de Mars",
      "Bois de Boulogne",
      "Jardin des Plantes",
      "Parc de Belleville"
    ]
  }
]

但是当我使用questions.push 方法时,我会得到这样的结果:

var questions = [ '
{
"Which of the following was not one of 'The Magnificent Seven'?": [
"Clint Eastwood",
"Steve McQueen",
"Charles Bronson",
"Robert Vaughn"
]
}']

为什么会在我的结果中添加一个奇怪的'

这是我将信息添加到数组中的方法:

var qdata = "{ \"" + question + "\":[ \"" + answer1 + "\", \"" + answer2 + "\", \"" + answer3 + "\", \"" + answer4 + "\"" + "]}";

questions.push(qdata);

我不明白为什么它将' 添加到我的数组中。

【问题讨论】:

  • 奇怪的问题是由于奇怪的用法。你为什么要这样构造数组?为什么不是普通的旧 var arr = [] // etc code be here
  • 如果你想要一个对象,你为什么要构建一个字符串?
  • 以前从未使用过数组,这是一个新项目,并且知道我犯了一个错误,这就是我寻求帮助的原因

标签: javascript arrays json node.js arraylist


【解决方案1】:

在您的示例中,qdata 只是一个字符串。您没有将其解析为 JSON。

尝试使用:

JSON.parse(qdata)

在将其推送到数组之前

更多信息:JSON.parse()

【讨论】:

  • 这行得通,但如果他们不构建一个字符串开始会更好。
  • 如果他已经有了解析的数据,为什么还要让他使用JSON.parse
  • 无论如何我的解决方案可能不是最好的,但是当它是一个字符串时还没有解析数据。他可能会以字符串的形式接收数据,谁知道呢。但是我确实相信@JayDJohno 现在能够弄清楚他不应该推动字符串
  • 哇,太有道理了哈哈,数据已经是 JSON 并被解析成字符串,我只需要将其添加为对象。
【解决方案2】:

您正在 qdata 中创建一个字符串对象并将其添加到数组中,这就是 JavaScript 正在做的事情。 ' 是因为它是一个字符串。

如果您想添加对象,请尝试以下操作:

var objectQuestion = {};
objectQuestion[question] = [answer1, answer2, answer3, answer4];
questions.push(objectQuestion);

【讨论】:

  • 谢谢你,我会试试看:)
【解决方案3】:

当您声明变量 qdata 时,您将其设置为 String 而不是 Object"{x: 123}"{x: 123},第一个是 String,这将使对象 { x: 123}(第二个例子)如果你要复制粘贴它(当然没有")。

所以基本上你只需要将qdata 改成这样:

var qdata = {}
qdata[question] = [answer1, answer2, answer3, answer4]
questions.push(qdata)

如果你有任何机会使用 ES6,它会更短:

questions.push({[question]: [answer1, answer2, answer3, answer4]})

【讨论】:

  • 这正是我所需要的,我的技能现在正在发挥作用,非常感谢,我已经将你的答案标记为正确
  • @DavidVicente 抱歉,如果您觉得我复制了您的答案,但我没有复制您的答案。答案很简单,任何初级 JavaScript 开发人员都可以给出类似的答案。我的答案在你之后,因为我花时间写了更多细节和更好的格式。
猜你喜欢
  • 2015-02-27
  • 2018-06-26
  • 2011-08-13
  • 2011-08-17
  • 2011-02-02
  • 2021-10-10
  • 2014-04-21
  • 2010-12-30
  • 2014-03-21
相关资源
最近更新 更多