为什么可以';控制台是否在Javascript上记录/字符串化整个数组?

为什么可以';控制台是否在Javascript上记录/字符串化整个数组?,javascript,arrays,json,Javascript,Arrays,Json,因此,我正在努力在Javascript上访问一个有点复杂的数组 简单地说,我有这样一个数组: globalForm['prop1'] = anotherArray[]; globalForm['prop2'] = yetAnotherArray[]; 如果我尝试: console.log(globalForm); //-or- JSON.stringify(globalForm) 我得到一个空数组[]或一个空JSON对象 但如果我这样做: console.log(globalForm['pr

因此,我正在努力在Javascript上访问一个有点复杂的数组

简单地说,我有这样一个数组:

globalForm['prop1'] = anotherArray[];
globalForm['prop2'] = yetAnotherArray[];
如果我尝试:

console.log(globalForm);
//-or-
JSON.stringify(globalForm)
我得到一个空数组[]或一个空JSON对象

但如果我这样做:

console.log(globalForm['prop1']);
//-or-
JSON.stringify(globalForm['prop1'])
我实际上得到了它的内容

我尝试记录或串接整个阵列时是否做错了/愚蠢了?我试图实现的是从该数组创建一个复杂的JSON对象

这是我的实际代码: 对于prop1:

var completedWeights = [];
globalForm['CompletedFormPhoto'] = images;

var radio_groups = {}
$(".weightRadio:radio").each(function(){
    radio_groups[this.name] = true;
});
for(group in radio_groups){
    thisGroup = $(".weightRadio:radio[name="+group+"]:checked");
    if_checked = !!thisGroup.length;
    completedWeights.push({'IdWeight':thisGroup.attr('name'), 'Value':thisGroup.val()});
}
globalForm['CompletedFormWeight'] = completedWeights;
对于prop2(这实际上在生成prop1之前执行):

数组实际内容的一些示例:


提前感谢。

您正在尝试做的很好,没有理由对复杂对象进行字符串化

同样值得注意的是,它不是一个json对象,它不是一个javascript对象,也不是一个描述对象的json字符串

看看这个:

var object = {
    prop1 : 'what ever',
    prop2 : 'whatever to',
    prop3 : [
        {a : "a", b: 'b' },
        {a : "a", b: [
            {a : "a", b: 'b' },
            {a : "a", b: "b" },
            {a : "a", b: 'b' }
        ]},
        {a : "a", b: 'b' }
        ]
};

console.log(JSON.stringify(object));
// outPuts : {"prop1":"what ever","prop2":"whatever to","prop3":[{"a":"a","b":"b"},{"a":"a","b":[{"a":"a","b":"b"},{"a":"a","b":"b"},{"a":"a","b":"b"}]},{"a":"a","b":"b"}]}


提示:当我遇到一些问题时,我会在jsfiddle.net或plunker中尝试它的一个小版本,以进行“健全性检查”,希望这对我有所帮助。我假设您将
globalForm
创建为一个数组。JavaScript中的数组只理解整数索引。由于它们仍然是对象,您当然可以给它们命名属性,但这些属性不会填充数组。JavaScript中点表示法和括号索引的等价性可能误导了您

所以要么你只使用这样的数字:

globalForm=[]
globalForm[1]=["whatever"]
globalForm[2]=["etc"]

console.log(globalForm)
=> [undefined, ["whatever"], ["etc"]]
(请注意,数组索引是从零开始的)

…或者,如果您正在寻找更像名称和值之间的映射的对象,则只需使用(非数组)对象:


完全做到了。我将globalForm声明为一个简单数组。把它的定义改为{}很有魅力。谢谢
globalForm=[]
globalForm[1]=["whatever"]
globalForm[2]=["etc"]

console.log(globalForm)
=> [undefined, ["whatever"], ["etc"]]
globalForm={}
globalForm["prop1"]=["whatever"]
globalForm["prop2"]=["etc"]

console.log(globalForm)
=> {prop1: ["whatever"], prop2:["etc"]}