将一个javascript对象推送到另一个javascript对象中

Pushing a javascript object into another javascript object

本文关键字:对象 javascript 另一个 一个      更新时间:2023-09-26

我正在尝试将两个javascript集合并为一个。我正在尝试将products 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);

简单的错误:将Array.push方法的返回值分配给变量$scope.SolutionProducts。相反:

$scope.Solution.Quotes.push($scope.Products);
$scope.SolutionProducts = $scope.Solution;

请注意,$scope.Solution$scope.SolutionProducts将具有相同的引用,这意味着您实际上不需要$scope.SolutionProducts变量,可以继续使用$scope.Solution

@MVP在代码中提出了一个关键问题:您只想将Solution对象的引用传递给SolutionProducts对象。使用当前代码,您将$scope.SolutionProducts设置为push()函数的返回值,该函数实际上将数组的长度返回为整数,而不是对象。(更多信息,请参阅MDN在push上的文章)

第二个问题是,您实际上并没有在阵列上使用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