Javascript / AngularJS对象选择基于表达式作为键

Javascript / AngularJS object selection based on expression as key

本文关键字:表达式 AngularJS 对象 选择 Javascript      更新时间:2023-09-26

我有一个javacript对象(基本上,来自webapi调用的数据),格式如下:

    $scope.Muncipalties = {
    "2290_BR1": "ABBOTTSTOWN",
    "2290_BR2": "ARENDTSVILLE",
    "2290_BR3": "BENDERSVILLE",
    "2290_TS01": "BERWICK TWP",
    "2290_BR4": "BIGLERVILLE",
    "2290_BR5": "BONNEAUVILLE",
    "2290_TS02": "BUTLER TWP",
    "2290_BR6": "CARROLL VALLEY",
    "2290_TS3": "CONEWAGO TWP",
    "2291_TS4": "CUMBERLAND TWP",
    "2291_BR7": "EAST BERLIN",
    "2291_BR8": "FAIRFIELD",
    "2291_TS5": "FRANKLIN TWP",
    "2291_TS6": "FREEDOM TWP"};

现在,我需要从上面的对象创建另一个对象,但是,它应该按部分键值过滤。 即说键是 2290,那么只应该复制那些键为"2290_"的记录。如果键为 2291,则只应复制最后 5 条记录。

AngulaJS过滤器中有什么方法可以做到这一点吗?

Plunker在这里:https://plnkr.co/edit/OmKHwF1fx1tUVVXYtogp?p=preview

这里不需要角度,这不是一个数组,它是一个对象,要让另一个对象这样做:

JsBin 示例

给你:

var obj = {};
for (var prop in m) {
  if (prop.indexOf('2290') > -1) {
    obj[prop] = m[prop];
  }
}

下面的代码怎么样?

.JS:

$scope.filterId = function(id, items) {
    var result = {};
    angular.forEach(items, function(value, key) {
      if ( key.match(id)  ) {
        result[key] = value;
      }
    });
    return result;
};

.HTML:

<div ng-repeat="(k,v) in filterId(2290, Muncipalties)">
  {{v}}
</div>