为什么可以';控制台是否在Javascript上记录/字符串化整个数组?
因此,我正在努力在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
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"]}