如何获得对象的长度

时间:2018-10-31 15:24:50

标签: javascript arrays

我有这个数组,我想在单击时追加一些新项目,但是首先我需要获取数组的长度,以便将项目添加到正确的位置。这是数组的样子:

"parent": [{
   "child": {}, 
   "child2": {},
   ...
 }];

数组需要看起来像这样,并且在页面加载时为空。我想在子元素中插入值,例如:

"parent": [{
    "child": {
       "0": 1,
       "1": 1,
       "2": 1
     },
     ...
 }];

首先,我无法获得子数组的长度:(

注意,数组必须看起来完全像这样,子元素的排列顺序应为0到n。

每次我询问孩子的身长时,都会得到“未定义”作为响应。即使我手动输入值ex。 “ child”:{“ 0”:“ 1”,“ 1”:“ 1”}我不确定孩子的身长。

2 个答案:

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