关于JavaScript中的数组和对象的混淆

时间:2017-03-05 10:10:16

标签: javascript node.js

我想要那样的格式

"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' } ]

3 个答案:

答案 0 :(得分:1)

您看到的输出是打印时的标准节点输出和对象。它显示它有一个Object,但不会详细打印出来。

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))

答案 1 :(得分: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; }

答案 2 :(得分: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))