Javascript 如何将其附加到空JSON对象?
问题是Javascript 如何将其附加到空JSON对象?,javascript,json,Javascript,Json,问题是kids对象的第一个元素为空。我怎样才能避开它?如果不将其声明为JSON对象,则无法访问push元素 谢谢只需将孩子声明为空数组: var kids = [{}]; i = 0; while (i++ !== count) { child = { value: Math.floor(Math.random() * 100), children: addChildren(Math.floor(Math.random() * 10)) };
kids
对象的第一个元素为空。我怎样才能避开它?如果不将其声明为JSON对象,则无法访问push
元素
谢谢只需将孩子声明为空数组:
var kids = [{}];
i = 0;
while (i++ !== count) {
child = {
value: Math.floor(Math.random() * 100),
children: addChildren(Math.floor(Math.random() * 10))
};
kids.push(child);
console.log( kids );
}
您可以让对象包含一个空数组
var kids = [];
稍有改动(为局部变量添加var):
我想这就是你想要的
更新:你的要求很奇怪。您可以这样做:
var kids = []; //Note this line
var i = 0; //index counter most likely needs to be local
while (i++ !== count) {
var child = {
value: Math.floor(Math.random() * 100),
children: addChildren(Math.floor(Math.random() * 10))
};
kids.push(child);
console.log(kids);
}
或
这将满足您的要求,但我认为,我最初显示的仍然是您想要的。听起来您希望最终得到一个JavaScript对象,该对象包含多个对象实例,这些对象具有两个键
值
和子对象
。看起来数组是最好的选择(Khnle和Chris的答案告诉你):
但是,在对其中一个答案的评论中,您说您不想要数组。一种方法是把它包起来,就像杰加森的回答:
[{"value":2,"children":3}, {"value":12,"children":9}, {"value":20,"children":13}]
您的问题似乎是说您喜欢数组,因为您得到了push
操作,但您希望完全避免使用它们。完全避免数组的唯一方法是使用每个对象自己的唯一键标记每个对象。如果这真的是你想要的,它会是这样的:
{
"children": [
{"value":2,"children":3},
{"value":12,"children":9},
{"value":20,"children":13}
]
}
这并不难做到;只需将kids.push(child)
替换为kids[“child”+i]=child
不过,请确保这是您真正想要的,因为这群孩子似乎真的在尖叫“数组”!:-) 听起来他想将其编码为JSON,这意味着他需要JavaScript对象中的数组。Chris是正确的(+1),只是在他的评论中他刚刚杀死了另一只小猫(根据上面Ates Goral的评论)。至于Shamoon(OP)想要什么,我认为他或她还没有解释清楚。每天学习新的东西。谢谢你指出这一点。JSON部分在哪里?而
push
是Javascript数组上的一种方法,而不是Javascript对象上的方法。“JSON”是一个被过度使用的术语。事实上,术语“JSON对象”的唯一正确用法是在ECMAScript 5中引用对象JSON时。对于大多数人的意思,我认为应该说“JSON字符串”。每当有人说“JSON对象”或有一个包含解析数据的变量“JSON”时,小猫就会死去。“问题是kids对象的第一个元素是空的。”——kids
是一个数组,如果你不想让第一个元素成为一个空的物体,为什么你要把一个空的物体放在那里?请重新表述你的问题,让它更清楚你想做什么。请给出所需输出的具体示例。您似乎不理解数组和对象之间的区别(正如其他人指出的,您似乎也不知道JSON是什么)。帮助我们帮助你…不确定这是否有效。这将使我的键成为子项
,但我将丢失值
,不是吗?不。通过执行obj.children[0]
可以获得child
对象,并且可以通过obj.children[0]访问children
或obj.children[0]来访问children
或value
,使children
成为一个数组。我需要它一直是JSON
var kids = [{
value: Math.floor(Math.random() * 100),
children: addChildren(Math.floor(Math.random() * 10))
}];
var i = 1; //1 less iteration than previous
while (i++ !== count) {
var child = {
value: Math.floor(Math.random() * 100),
children: addChildren(Math.floor(Math.random() * 10))
};
kids.push(child);
console.log(kids);
}
[{"value":2,"children":3}, {"value":12,"children":9}, {"value":20,"children":13}]
{
"children": [
{"value":2,"children":3},
{"value":12,"children":9},
{"value":20,"children":13}
]
}
{
"child0":{"value":2,"children":3},
"child1":{"value":12,"children":9},
"child2":{"value":20,"children":13}
}