angularjs 检查键是否已经存在,如果不存在则将其推送到 foreach 循环内的范围

angularjs check if key allready exist and if not exist push it to scope inside foreach loop

我首先使用 php 从 Db 获取数据以构建 table ,后来我从套接字获取新的 json 数据并更新 $scope,我需要的是推送$scope.

中不存在的值
angular.forEach(event.market, (market ,keym) => {

   angular.forEach($scope.users.results, function(value, key) {

   if(value.marketId == keym) // keym = new marketId from socket
   {
     //do nothing
   }
  else
  {
     //push(new valuse);  
  }


   });
});

我遇到的问题是,如果 marketId dosent 与我已经拥有的任何键匹配,那么它会推送不匹配的次数,而不是在不匹配时推送 1 次。 我做错了什么?

谢谢

在推送到某个数组之前,检查 marketId 是否不匹配任何键并且也不存在于数组中。因此,在其他情况下,您将必须为 marketId 检查和数组检查添加条件。

据我了解,您想在数组中添加缺少的对象。我认为您可以通过以下方式简单地实现您想要做的事情:

angular.forEach(event.market, (valueM, keyM) => {
  let isDuplicate = $scope.users.results.filter(user => /* some validation here */).length > 0;

  if(!isDuplicate) {
    // push new values
  }
})

解决了我的问题:

angular.forEach(game.market, (market, keym) => {

  var addToArray = true;
  for (var i = 0; i < $scope.users.results.length; i++) {
    if ($scope.users.results[i].marketId == keym) {
      addToArray = false;
    }
  }
  if (addToArray) {


    $scope.users.results.push({
      marketId: keym,
      marketName: market.name
    });

  }

  $scope.users.results.marketName = ' ';
  $scope.users.results.marketId = ' ';

});

谢谢