问题使用json.js对多维数组进行字符串化

Cor*_*ier 11 javascript jquery json

我有问题.stringify(),但我认为我的JavaScript数组一定是错的,这是我的代码:

var questions = new Array();

$('#Valid').hover(function(){
    for (i=0;i < $('.Questions').length;i++){
        questions[i]=new Array();
        questions[i]['numero']=$('.Numero:eq('+i+')').html();
        questions[i]['question']=$('.ItemInput:eq('+i+')').val();
        questions[i]['variable']=$('.VarName:eq('+i+')').val();
    }

    var stringJSON=JSON.stringify(questions)
    alert (stringJSON)
})
Run Code Online (Sandbox Code Playgroud)

stringJSON var返回:

[[]]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Lig*_*ica 19

数组有整数键,而不是字符串.

改为使用对象; JS中的对象看起来像关联数组:

var questions = new Array();
$('#Valid').hover(function(){
    for (var i=0;i < $('.Questions').length;i++){
        questions[i]={};
        questions[i]['numero']=$('.Numero:eq('+i+')').html();
        questions[i]['question']=$('.ItemInput:eq('+i+')').val();
        questions[i]['variable']=$('.VarName:eq('+i+')').val();
    }

    var stringJSON=JSON.stringify(questions);
    alert(stringJSON);
});
Run Code Online (Sandbox Code Playgroud)

设置questions[i]{}关键.

您可以缩短此语法:

var questions = new Array();
$('#Valid').hover(function(){
    for (var i=0;i < $('.Questions').length;i++){
        questions[i] = {
            numero:   $('.Numero:eq('+i+')').html(),
            question: $('.ItemInput:eq('+i+')').val(),
            variable: $('.VarName:eq('+i+')').val()
        };
    }

    var stringJSON=JSON.stringify(questions);
    alert(stringJSON);
});
Run Code Online (Sandbox Code Playgroud)

  • 从字面上看,这拯救了我的生命.谢谢 (2认同)

Thi*_*ter 6

固定:

替换questions[i]=new Array();questions[i] = {};(或者= new Object();如果你真的想要这种"丑陋"的语法).

说明:

JavaScript中的数组就像C语言中的数组一样:它们只支持区间中的整数索引[0, array.length).

对于关联数组,可以使用使用对象文字创建的对象{}.