我有这个数组,我想在单击时追加一些新项目,但是首先我需要获取数组的长度,以便将项目添加到正确的位置。这是数组的样子:
"parent": [{
"child": {},
"child2": {},
...
}];
数组需要看起来像这样,并且在页面加载时为空。我想在子元素中插入值,例如:
"parent": [{
"child": {
"0": 1,
"1": 1,
"2": 1
},
...
}];
首先,我无法获得子数组的长度:(
注意,数组必须看起来完全像这样,子元素的排列顺序应为0到n。
每次我询问孩子的身长时,都会得到“未定义”作为响应。即使我手动输入值ex。 “ child”:{“ 0”:“ 1”,“ 1”:“ 1”}我不确定孩子的身长。
答案 0 :(得分:1)
对象没有长度,您将需要使用author = models.ForeignKey( User, on_delete=models.SET_NULL, null=True)
,例如:
Object.key
答案 1 :(得分:0)
这不是一个数组,而是一个对象,其属性为"0"
,"N"
...
将其重构为使用实际数组或执行以下操作:
const length = Object.keys (o.parent[0].child).length
...可能包含这些对象和其他对象的属性,因此对于您的目的而言不可靠...
如果您不想使用数组,则没有确定的解决方案。
如果您的输入包含这些对象而不是数组,则可能需要将它们转换为数组,然后对它们进行操作!
这是一个定义objectToArray
并为可转换为数字的键生成数组的代码段:
const o = { '0': 'hello', '1': 'world', '2': '!!!' }
const objectToArray = o => Object.entries (o)
.filter (([key]) => !isNaN (key))
.reduce ((array, [key, value]) =>
(array[Number (key)] = value, array),
[]
)
const output = objectToArray (o)
console.log (output)