我正在尝试将两个javascript集合并为一个。我试图将产品javascript对象放入解决方案对象的Quotes属性中。因此,最终结果应该是SolutionProducts对象。
$scope.Products = {
"id":"",
"attributes":{
"term":"36"
},
"groups":[
{
"products":[
// list of products
]
}
]
}
$scope.Solution = {
"SolutionID":"",
"Quotes":[
]
}
$scope.SolutionProducts = {
"SolutionID":"",
"Quotes":[
{
"id":"",
"attributes":{
"term":"36"
},
"groups":[
{
"products":[
// list of products
]
}
]
}
]
}
我尝试使用推送功能,但它没有工作
$scope.SolutionProducts = $scope.Solution.Quotes[0].push($scope.Products.products);
答案 0 :(得分:1)
简单错误:您将Array.push
方法的返回值分配给变量$scope.SolutionProducts
。而是这样做:
$scope.Solution.Quotes.push($scope.Products);
$scope.SolutionProducts = $scope.Solution;
请注意,$scope.Solution
和$scope.SolutionProducts
将具有相同的引用,这意味着您实际上不需要拥有$scope.SolutionProducts
变量,并且可以继续使用$scope.Solution
}。
答案 1 :(得分:1)
@MVP会给您的代码带来一个关键问题:您只想将Solution
对象的引用传递给SolutionProducts
对象。使用当前代码,您将$scope.SolutionProducts
设置为push()
函数的返回值,该函数实际上以整数形式返回数组的长度,而不是对象。 (见MDN's article on push
for more)
第二个问题是你实际上没有在数组上使用push
:
$scope.SolutionProducts = $scope.Solution.Quotes[0].push($scope.Products.products);
您将.push
应用于Quotes[0]
,这是数组中的值,而不是数组本身。你需要这样的东西:
$scope.Solution.Quotes.push($scope.Products);
现在你在正确的数组上使用push
函数。
将这两个问题放在一起,你应该有一些看起来像这样的东西:
$scope.Solution.Quotes.push($scope.Products);
$scope.SolutionProducts = $scope.Solution; //sets SolutionProducts to Solution reference