如何在JavaScript中将一个数组推送到另一个数组元素内作为新属性?

5
所以,举个例子,我有下面这个数组

var sections = [{ name: 'apple', count: 20 },
                 { name: 'banana', count: 80 },
                 { name: 'oranges', count: 10 }]

现在,如果我想添加更多的项目,那么我可以这样做:
sections.push({ name: 'mango', count: '32' });

这将把新数组添加到节(section)中。

现在,假设我有另一个数组,它显示水果来自哪里以及数量。

var country = [{ country: 'usa', count: 5 },
               { country: 'brazil', count: 27 }]

所以,我想将这个新的country数组添加到sections的第三个元素中,并使用一个名为country的新属性,如下所示。
var sections = [{ name: 'apple', count: 20 },
                { name: 'banana', count: 80 },
                { name: 'oranges', count: 10,
                  country: [{ country: 'usa', count: 5 },
                            { country: 'brazil', count: 27 }]
                }]

我该怎么做呢?我尝试了pushsplice,但完全搞不清楚。

我还尝试了sections[3].push.apply(country)等许多其他方法,但我已经想不起来了。要么我收到了错误提示,要么就是没有按照我想要的方式将数组推入。


2
sections[2].country = country; 第二个部分的国家等于国家。 - Jack
真的吗?!这么简单?我一直在试着用其他困难的方法,原来如此简单?天哪!!!谢谢。 - user1828605
“another array” 的索引位置是否对应于“sections”数组的索引位置? - guest271314
我不太确定你的意思,但我得到的答案都是正确的。 - user1828605
@user1828605 是的。sections 包含 3 个项目。"another array" 是否包含与 section 项目对应的 3 个项目? - guest271314
它不必如此。我正在处理的数组有18个项目,每个项目至少包含3个项目。但是,根据名称,它动态地添加“另一个数组”,只要每个项目的计数大于100,它就可以是1或1000。 - user1828605
2个回答

3

您可以尝试类似以下的方法:

sections[2].country =  country;

这里,我们写sections[2]表示引用sections数组中的第三个元素。然后,我们定义一个名为country的属性,并将所需的值赋给它。
为什么push方法不起作用? push是一个数组方法,它允许你将一个元素推到数组的末尾。如果你尝试在sections[2]上使用push,它将不起作用,因为sections[2]不是一个数组。同样,对于splice,它也是一个数组方法。

1

push 用于向数组中添加元素,而不是向对象中添加属性。对于属性,只需分配属性名称。

sections[2].country = country;

如果该属性已经存在且您想要添加内容,您可以使用以下代码:push
section[2].country.push({country: 'venezuela', count: 20});

不要忘记数组索引从0开始,所以第三个元素是[2]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接