2017-03-05 147 views
-1

數組和對象我想要的格式一樣,混淆在JavaScript

"attechent":[{ 
     "name":xyz, 
     field: [ 
      { title: 'a' }, 
      { title: 'b' } 
       ] 
     } 
    ] 

碼 - >>

var field=[] 
var obj1={"title":"a"} 
var obj2={"title":"b"} 
field.push(obj1) 
field.push(obj2) 
console.log(field) 

var outerfiled={} 
outerfiled.field=field 
out.name="xyz" 
console.log(outerfiled) 

var list=[outerfiled] 
console.log(list) 

問題就像是我的代碼是根據期望的輸出格式,但工作後
輸出是[ { field: [ [Object], [Object] ], name: 'xyz' } ]

+0

這正是'console.log'一樣。改爲:'console.log(JSON.stringify(list))' – trincot

+1

看起來正確。也許可以使用'console.log(JSON.stringify(list,null,2))'使東西看起來更像你的請求格式。 – Sirko

+0

我不確定你是否認爲你必須建立這樣的結構;一步一步按財產分配財產。你知道嗎,你可以做以下事情? 'VAR列表= [ \t { \t \t名: 'XYZ', \t \t字段: \t \t \t {標題: 'A'}, \t \t \t {標題: 'B'} \t \t] \t} ] * *(換行符不顯示在SO評論中,但是您可以添加它們)* – Thomas

回答

1

您看到的輸出是打印時的標準節點輸出和對象。它顯示它有一個對象,但不會詳細打印出來。

JSON.stringify將允許您根據需要設置對象的格式。它需要三個參數 - 格式對象,可選替換函數和可選縮進級別。請注意,屬性的順序不能保證。

在你的情況下,你不需要使用replacer函數,所以傳遞null作爲第二個參數。所需的縮進級別爲4個空格,因此您可以傳遞數字4作爲第三個參數。

var field=[] 
 
var obj1={"title":"a"} 
 
var obj2={"title":"b"} 
 
field.push(obj1) 
 
field.push(obj2) 
 

 
var outerfiled={} 
 
outerfiled.field=field 
 
outerfiled.name="xyz" 
 

 
var list=[outerfiled] 
 

 
var result = {attechent: list} 
 
// Extra args for JSON.stringify: 
 
// no replacer function required - pass null, indent level of 4 spaces required 
 
console.log(JSON.stringify(result, null, 4))

+0

你可以稍微解釋一下JSON中使用null和4的情況嗎?stringify –

+0

這個ans給出了正確的格式,但什麼是null 4,你如何選擇4. Ans應該是概括性的。 –

+1

@AakashKag大多數計算機系統都有「文檔」,您可以參考,這比在SO上提出要求更有效率。在這種情況下,谷歌爲「JSON.stringify」找出參數是什麼。 – 2017-03-05 10:47:04

0

您需要正確的變量名稱。

outerfiled.name = "xyz"; 
// ^^^^^^^ 

,後來分配到的結果,就像

var result = { attechent: list }; 

var field = []; 
 
var obj1 = { title: "a" }; 
 
var obj2 = { title: "b" }; 
 
field.push(obj1); 
 
field.push(obj2); 
 

 
var outerfiled = {}; 
 
outerfiled.field = field; 
 
outerfiled.name = "xyz"; 
 

 
var list = [outerfiled]; 
 
var result = { attechent: list }; 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

console.log不打印整個對象。如果你想打印整個對象,你可以使用util.inspect()。這裏是代碼

var utl = require("util"); 

var field=[] 
var obj1={"title":"a"} 
var obj2={"title":"b"} 
field.push(obj1) 
field.push(obj2) 
console.log(field) 

var outerfiled={} 
outerfiled.field=field 
outerfiled.name="xyz" 
console.log(outerfiled) 

var list=[outerfiled] 
console.log(utl.inspect(list, false, null)) 
+0

this is coming using util {attechment:'[{field:[{title:\'a \'},{title:\'b \'} ],name:\'xyz \'}]'} –

+0

我同意對象問題將通過json以及util來解決。現在我的輸出就像[{field:[{title:'a'},{title:'b'}],name:'xyz'}]。但對於附件var outerobj = {「attechment」:list} console.log(outerobj) –