如何在仅提取数组中指定的属性的同时遍历数据集?

How can I iterate over a dataset while only extracting properties specified in an array?

我正在 Angular 做一个项目。我找到了 this question,但这不是我需要的。

我进行了一次 API 调用并获得了一个 JSON 对象,该对象具有二十多个属性。因此,用户可能具有以下属性,然后是一些:

user.Name
user.Nickname
user.DOB
user.FavoriteColor
user.Address
...

我也有一个类似这样的数组。

$scope.ThePropertiesIWantToShow = [
                { propertyID: 1, displayValue: 'Name' },
                { propertyID: 3 displayValue: 'DOB' },
                { propertyID: 5 displayValue: 'Address' },

我有一个 table,我想在其中显示此数据,但我只想显示某些属性(上面数组中的属性)。如果我想手动显示 ThePropertiesIWantToShow 中的所有内容,我可能会这样做:

<tr ng-repeat="user in users">
    <td>{{user.Name}}</td>
    <td>{{user.DOB}{</td>
    <td>{{user.Address}{</td>
</tr>

但是,JSON 数据和 ThePropertiesIWantToShow 数组都大得多。我想知道如何使用 ng-repeat 来执行类似以下伪代码的操作,这样我就不必手动输入每个 属性。另外,如果我需要进行更改,我可以只更改数组,它会反映在多个地方:

for each user in users
     for each property in ThePropertiesIWantToShow
          <td>user.property</td>

根据之前链接的问题,我知道我可以做这样的事情来获得 all 属性:

<tr ng-repeat="user in users">
    <td ng-repeat="(property, value) in user">{{value}}</td>
</tr>

但这给了我来自 API 调用的所有数据,我只想显示数组中为每个用户提供的属性。

如果我理解的很好,你正在尝试这样做:

在您的 Angular 控制器中声明此函数:

$scope.getUserProperty = function(user, property) {
    return user[property];
}

然后用它来获取用户属性

<div ng-repeat="user in users">
  <div ng-repeat="p in properties">
      {{getUserProperty(user, p.displayValue)}}
  </div>
</div>

Working demo on JSFiddle

您可能想要的是:

$scope.fields =['Name','DOB','Address'];

然后在视图中重复每一行中的字段:

<tr ng-repeat="user in users">
    <td ng-repeat="field in fields">{{user[field]}}</td>
</tr>