将一个阵列复制到另一个阵列时出

时间:2015-03-04 14:33:01

标签: javascript arrays json angularjs

我正在尝试将数组的内容放入另一个数组中。我有这个json($ scopeProducts)...

{
"ID": "...",
"Groups": [
    {
        "Products": []
    }
{
        "Other": []
    }
]
}

我正在尝试将以下json添加到'Products'数组中($ scope.selectedProducts)...

[
{
    "ProductCode": "Code1",
},
{
    "ProductCode": "Code1",
},
]

我最终得到了这个......

{
"ID": "...",
"Groups": [
    {
        "Products": 
    [
        [
            {
                "ProductCode": "Code1",
            },
            {
                "ProductCode": "Code1",
            },
        ]
    ]
    }
{
        "Other": []
    }
]
}

...这是错误的(检查double [[在产品数组中]。我正在使用javascript push函数...

$scopeProducts.Groups[0].Products.push($scope.selectedProducts); 

有没有人可以告诉我如何在不创建双数组[[]]的情况下正确执行此操作?非常感谢

1 个答案:

答案 0 :(得分:2)

您的代码将数组作为条目推送到另一个数组中,而不是将条目附加到其中。

如果你想追加它(除非Angular有一些实用功能):

$scopeProducts.Groups[0].Products.push.apply($scopeProducts.Groups[0].Products, $scope.selectedProducts); 

这有点棘手:它使用Function#apply使用多个参数调用push$scope.selectedProducts中的每个条目都有一个参数。这是因为JavaScript数组没有本地append方法;它们最接近的是concat,它会创建一个 new 数组。但上述功能可用于附加功能。