一个数组在“array.push”一些字符串之后附加了未定义.这正常吗
An array gets appended with undefined after `array.push`ing some strings to it. Is that normal?
我在将一些字符串推送到数组后,JavaScript数组添加额外的未定义对象时遇到了问题。
$(function() {
var formTagArr = [];
$( "button", "#start-button" ).click(function() {
$.getJSON('http://127.0.0.1:8000/some_url/', function(data) {
formTagArr.push(buildForm(data));
console.log(formTagArr);
displayForm(formTagArr);
});
return false;
});
function buildForm(data) {
for (var i = 0; i < data.length; i++) {
var html = "";
var questionsTags = "<fieldset><p>" + data[i].question + "</p>";
var answersTags = "";
for (j = 0; j < data[i].answers.length; j++) {
answersTags += "<input type='radio' name='" + data[i].qid +
"' value='" + data[i].answers[j] + "' /" + ">" +
data[i].answers[j] + "'n";
}
html = questionsTags + answersTags + "</fieldset>";
formTagArr.push(html);
}
}
function displayForm(arr) {
if (arr.length === 0) {
return false;
}
var info = arr.pop();
$("#question-form").append(info[0]);
}
});
/some_url/返回此 JSON:
[{"qid": 4, "question": "How many legs does a spider have?", "answerswers": ["4", "6", "8", "10"]}, {"qid": 2, "question": "When did Nigeria become a republic?", "answerswers": ["1960", "1961", "1962", "1963"]}, {"qid": 1, "question": "When did Nigeria gain independence?", "answerswers": ["1960", "1961", "1962", "1963"]}, {"qid": 3, "question": "How many days are in a leap year?", "answerswers": ["360", "362", "365", "366"]}]
和 console.log(formTagArr); 在上面的代码中返回:
["<fieldset><p>How many l...e='10' />10'n</fieldset>", "<fieldset><p>When did N...963' />1963'n</fieldset>", "<fieldset><p>When did N...963' />1963'n</fieldset>", "<fieldset><p>How many d...'366' />366'n</fieldset>", undefined]
因此,displayForm() 失败,因为信息未定义。当然,我可以使用条件来跳过未定义的对象,但我想知道未定义的对象最初是如何到达那里的。
我做错了什么?
formTagArr.push(buildForm(data));
您的 buildForm 函数不返回任何内容,上面的代码尝试将该函数的结果推送到数组中。没有 return 语句的函数最终将变为未定义。
似乎应该只是
buildForm(data)
由于此函数已经推送到 formTagArr 数组。
jsfiddle
您需要删除 formTagArr.push 调用,并在 displayForm 调用中将行更改为:$("#question-form").html(info);
- 正则表达式删除最后一个数字之后的字符串
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- 如何在 javascript 中使用正则表达式提取句点 (.) 之后的字符串
- 从字符串中删除-之后的一些文本
- 使用Jquery和PHP在POST Ajax之后返回(一个空字符串)
- 从子字符串之后的字符串中获取字符串
- 我怎样才能得到这个字符串之后的所有内容
- 忽略文件扩展名jQuery之后的查询字符串
- 通过 JavaScript 获取字符串中第二个空格之前和之后的子字符串
- 删除字符串中第5个字符之后的所有字符
- 如果字符串位于iframe之后,则不会使用引导程序列表显示
- 获取javascript中/之前和之后的字符串值
- 获取每个'单词'在使用regex的Javascript字符串中的每个下划线之后
- 查找网页上字符串之后或之前出现的字符串
- 一个数组在“array.push”一些字符串之后附加了未定义.这正常吗
- javascript多行匹配在某个字符串之后
- 如何构造一个javascript正则表达式来提取特殊字符串之后的所有字符串
- 匹配出现在某个字符串之后的字符串
- 替换3个不同字符串之后的双引号之间的字符串
- NodeJs在一系列字符串之后添加字符