【问题标题】:Using wildcards to select all objects使用通配符选择所有对象
【发布时间】:2016-08-23 03:20:28
【问题描述】:

我正在使用 Angular 选择多个对象,所有对象都使用 3 个键,以相同的键开始和结束,它们的值也相同,只是中间键不同。

$scope.foo.one.bang = true;
$scope.foo.two.bang = true;
$scope.foo.three.bang = true;
$scope.foo.four.bang = true;
$scope.foo.five.bang = true;

是否有内置快捷方式可以在第二个键中使用通配符来选择所有相关对象,例如以下示例?:

$scope.foo.[any].bang = true;

【问题讨论】:

  • 嗯,你可以使用angular.forEach循环。
  • 我不知道 Angular,但在普通 JS 中可能类似于:Object.keys($scope.foo).forEach(k=>$scope.foo[k].bang=true);(使用箭头函数显然是可选的)。

标签: javascript angularjs json


【解决方案1】:

请试试这个,首先我们将所有设置为“true”,然后使用 angular.forEach 将所有设置为 false。

 $scope.foo ={}
    $scope.foo.one={}
    $scope.foo.two={}
    $scope.foo.three={}
    $scope.foo.four={}
    $scope.foo.five={}
    $scope.foo.one.bang = true;
    $scope.foo.two.bang = true;
    $scope.foo.three.bang = true;
    $scope.foo.four.bang = true;
    $scope.foo.five.bang = true;

    angular.forEach($scope.foo, function(value, key) {
        value.bang=false
      console.log(value.bang);
    });

【讨论】:

    【解决方案2】:

    Angular.js 中没有内置方法可以做到这一点。您可以使用Angular.forEach 循环,但它与纯Javascript 完全相同。实现您想要的最简单的方法是使用简单的迭代循环。

    var obj = $scope.foo;
    var objs = [];
    
    for(let i in obj) if(obj[i].bang === true) objs.push(bang[i]);
    
    console.log(objs); // All objects with that property
    

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2022-10-31
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2014-01-02
      • 2012-10-29
      相关资源
      最近更新 更多