[英]Why won't console.log show my whole javascript multidimensional array?
[英]Why can't I console log/stringify a whole array on Javascript?
所以我很努力地嘗試在Javascript上訪問一個有點復雜的數組。
用一種簡單的方法,我有一個像這樣的數組:
globalForm['prop1'] = anotherArray[];
globalForm['prop2'] = yetAnotherArray[];
如果我嘗試:
console.log(globalForm);
//-or-
JSON.stringify(globalForm)
我得到一個空的Array []或一個空的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之前執行):
var fileInput = document.getElementById('fileInput');
var fileDisplayArea = document.getElementById('fileDisplayArea');
fileInput.addEventListener('change', function(e) {
var idImg = Date.now();
var currentImageObj =[];
var file = fileInput.files[0];
var imageType = /image.*/;
var addedImage = document.createElement('div');
addedImage.className = 'addedImage';
if (file.type.match(imageType)) {
var reader = new FileReader();
reader.onload = function(e) {
var img = new Image();
img.src = reader.result;
img.id = idImg;
addedImage.appendChild(img);
var ind = img.src.indexOf(',/9j/') + 5;
currentImageObj["Photo"] = img.src.substr(ind);
images[idImg] = currentImageObj;
}
reader.readAsDataURL(file);
console.log(images);
} else {
addedImage.innerHTML = "File not supported!";
}
addComment = document.createElement('a');
addComment.className = "btn btn-default btn-block addComment";
addComment.setAttribute("data-toggle", "modal");
addComment.setAttribute("data-target", "#myModal");
addComment.text = "Agregar Comentario";
addComment.id = idImg;
addedImage.appendChild(addComment);
fileDisplayArea.appendChild(addedImage);
});
數組實際內容的一些示例:
提前致謝。
我假設您將globalForm
創建為數組。 JavaScript中的數組僅理解整數索引。 由於它們仍然是對象,您當然可以給它們命名的屬性,但是這些屬性不會填充數組。 JavaScript中點符號和括號索引的等效性可能會誤導您。
因此,要么只使用像這樣的數字:
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"]}
您嘗試執行的操作完全沒問題,沒有理由對復雜對象進行字符串化
還值得注意的是它不是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之類的工具中進行小版本的“健全性檢查”,希望對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.