首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript多维数组转换为JSON

javascript多维数组转换为JSON
EN

Stack Overflow用户
提问于 2015-09-19 07:36:15
回答 3查看 57关注 0票数 2

请检查一下我的小提琴,告诉我哪里做错了?我不想要option0为什么它会到来。

代码语言:javascript
运行
复制
var qus ={ 
    {

    "qus" :"what is your name?",
    "option0" : {"ans" : "w", "cor":"h"},
    "option1" : {"ans" : "Alex", "cor":"false"},
    "option2" : {"ans" : "Hervy", "cor":"false"},
    "option3" : {"ans" : "Rico", "cor":"true"},
    "option4" : {"ans" : "Tom", "cor":"false"},
    },

}

这是我的jsfiddle链接http://jsfiddle.net/rushdi1987/jvhgxawm/4/

EN

Stack Overflow用户

发布于 2015-09-19 07:55:17

Option0在其中是因为它是数组的一部分。数组的0索引是第一个部分中的"what is your name?",第二部分中的"what is your brother's name?"

使用for in将迭代每个索引,取0索引最终将该字符串作为可能的答案之一。因为你假设答案的一部分是名字,1是标志,所以[0][1]的结果是“你叫什么名字?”是wh。此时数组的索引为0,因此您最终得到了您不想要的"option0" : {"ans" : w, "cor:"h"},

修复方法很简单,只需使用条件if和continue跳过for in循环中索引

代码语言:javascript
运行
复制
if(n == 0)continue;

我稍微重构了您的代码,使其更易于阅读

代码语言:javascript
运行
复制
var objects = [
    [
        "what is your name?", 
        ["Alex", false],
        ["Hervy", false],
        ["Rico", true],
        ["Tom", false]
    ],
    [
        "what is your brother's name?", 
        ["Alex", false],
        ["Hervy", true],
        ["Rico", false],
        ["Tom", false]
    ]
];

var el = document.getElementById("out");

el.innerHTML += 'var qus ={ <br>';

for (i in objects){
    var qset = objects[i];

    el.innerHTML += '{ <br>';
    el.innerHTML += '"qus" :"' + qset[0] + '",<br>';

    for (n in qset){
        if(n == 0)continue;
        var nameset = qset[n];

        el.innerHTML += '"option' + n;
        el.innerHTML += '" : {"ans" : ' + nameset[0];
        el.innerHTML += ', "cor:"' + nameset[1] + '"},<br>';
    }

    el.innerHTML += '},<br><br>';
}
el.innerHTML += '}';
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32662553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档