将数组推入JSON对象,Javascript

时间:2014-10-06 16:46:48

标签: javascript arrays json object

我正在努力编写一个有角度的应用程序。将空数组推入对象时遇到问题。

我收到错误:

  

TypeError:无法读取未定义

的属性'push'

我有一个名为items的对象,如下所示:

Object

 {
  "Name": "name",
  "Description": "description"
 }

我想将一个空数组推入可以包含另一个数组的对象中。这样的事情。

Object

 {
  "Name": "name",
  "Description": "description",
  "Related Items": {
                    Item1:{...},
                    Item2:{...},
                    ...
                   }
 }

我的控制器在调用时执行此操作:

$scope.push = function () {
  $scope.item.push({"Related Items":[]});
};

我知道我必须对JSON对象和数组的简单方法感到困惑,但我似乎无法找到解决方案。

三江源!

3 个答案:

答案 0 :(得分:2)

由于item是一个对象,您只需设置Related Items属性:

$scope.item["Related Items"] = [];
$scope.item["Related Items"].push({});

但是,上面看起来Related Items实际上是一个具有键名Item1等的对象而不是数组。

$scope.item["Related Items"] = {};
$scope.item["Related Items"].Item1 = {};

答案 1 :(得分:1)

Javascript' push功能仅在您将值推送到数组时才有效。如果你试图推送到一个对象,它将无法工作,而是会尝试调用" push"哪个不存在。这就是您收到错误的原因。

确保$scope.item是一个数组([]new Array),然后使用您想要的值推送到它。

$scope.item = [];
$scope.push = function () {
  $scope.item.push({"Related Items":[]});
};

Here's W3School的.push()方法解释。

答案 2 :(得分:1)

项目对象应该是这样的 { .... "相关项目":<&#;;某些价值"> .... }

它应该已经有了密钥。