Javascript Ionic应用程序错误:array.push()不是函数

Javascript Ionic应用程序错误:array.push()不是函数,javascript,angularjs,arrays,ionic-framework,Javascript,Angularjs,Arrays,Ionic Framework,我创建了一个有控制器和工厂的应用程序。我在工厂内部有一个数组,我想把元素的id推送到这个数组中。然而,当我试图将元素推送到数组时,我得到了一个错误 “favorites.push不是一项功能” 下面你可以找到我的控制器和工厂。感谢您阅读: 工厂: .factory('favoriteFactory',['$resource', 'baseURL','$localStorage', function ($resource, baseURL, $localStorage) {

我创建了一个有控制器和工厂的应用程序。我在工厂内部有一个数组,我想把元素的id推送到这个数组中。然而,当我试图将元素推送到数组时,我得到了一个错误

“favorites.push不是一项功能”

下面你可以找到我的控制器和工厂。感谢您阅读: 工厂:

.factory('favoriteFactory',['$resource', 'baseURL','$localStorage', function ($resource, baseURL, $localStorage) {
            var favFac = {};
            var favorites = $localStorage.get('favorites', []);
          favFac.addFavorites = function (index) {
            for(var i=0; i<favorites.length; i++){
              if(favorites[i].id == index)
                return
            }
              favorites.push({id: index});
              $localStorage.storeObject('favorites',favorites)
          }
          favFac.deleteFromFavorites = function (index) {
            for (var i = 0; i < favorites.length; i++) {
              if (favorites[i].id == index) {
                favorites.splice(i, 1);
              }
            }
            $localStorage.storeObject('favorites', favorites)
          };

          favFac.getFavorites = function () {
            return $localStorage.getObject('favorites',[]);
          };
          return favFac
        }])
    .controller('MenuController', ['$scope', 'menuFactory', 'favoriteFactory','baseURL', '$ionicListDelegate', 'dishes', '$localStorage',
         function($scope, menuFactory,favoriteFactory, baseURL, $ionicListDelegate, dishes, $localStorage) {


        $scope.baseURL = baseURL;
        $scope.tab = 1;
        $scope.filtText = '';
        $scope.showDetails = false;
        $scope.showMenu = true;
        $scope.message = "Loading ...";
        $scope.addFavorite = function (index) {
          console.log("index:" +index);
          favoriteFactory.addFavorites(index);
          $ionicListDelegate.closeOptionButtons();

        };
        $scope.dishes = dishes;

            $scope.select = function(setTab) {
              $scope.tab = setTab;

              if (setTab === 2) {
                $scope.filtText = "appetizer";
              }
              else if (setTab === 3) {
                $scope.filtText = "mains";
              }
              else if (setTab === 4) {
                $scope.filtText = "dessert";
              }
              else {
                $scope.filtText = "";
              }
                };
   $scope.isSelected = function (checkTab) {
      return ($scope.tab === checkTab);
    };

    $scope.toggleDetails = function() {
      $scope.showDetails = !$scope.showDetails;
    };
  }])

我假设您使用的是
ngStorage
。get方法没有第二个参数。因此,您尝试返回默认值
[]
(空数组)只是返回
未定义的
,然后尝试推送到
未定义的
,而不是推送到数组

ngStorage
的源代码未显示
get
的第二个参数:

所以这一行:

var favorites = $localStorage.get('favorites', []);
应该是这样的:

var favorites = $localStorage.get('favorites') || [];

感谢您的回复。默认情况下,它可以包含两个参数。第二个是您可以提供的默认值。问题是无论我改变什么,我都会犯同样的错误。即使在我创建简单数组的时候。这是我代码的第二部分,我在代码中创建了相同的东西:function(key,defaultValue){return$window.localStorage[key]| | defaultValue;},我知道我在谈论我自己的函数,我刚刚分享了它。它也在做同样的事情,我发送到默认值。var favorites=$localStorage.get('favorites')||[];也许您已经在本地存储器中存储了一个与键匹配的值,该值不是数组。另外,
get
getObject
之间有什么区别?