ArrayList奇怪的问题

时间:2018-01-26 14:00:48

标签: javascript arrays json node.js arraylist

我已经设置了一个名为Array的{​​{1}},我正在将API的结果推送到questions,这没有任何问题。

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

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); 添加到我的数组中。

3 个答案:

答案 0 :(得分:3)

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

如果您想添加对象,请尝试以下方法:

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

答案 1 :(得分:1)

当您声明变量qdata时,您将其设为String而不是Object"{x: 123}" vs {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]})

答案 2 :(得分:0)

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

尝试使用:

JSON.parse(qdata)

将其推送到数组之前

更多信息:JSON.parse()