如何将数组映射到具有不同值的另一个数组(angularJs)

时间:2017-07-24 20:46:45

标签: javascript angularjs arrays

目前我正在尝试使用现有数组将其映射到另一个数组,以匹配服务器所需的内容。

例如......

我有一个数组:

$scope.users = [{
        "firstName": "john",
        "middleName": null,
        "lastName": "doe",
        "registrationNumber": "334"
    },
    {
        "firstName": "paul",
        "middleName": null,
        "lastName": "dean",
        "registrationNumber": "223"
    },
    {
        "firstName": "andrew",
        "middleName": null,
        "lastName": "mac",
        "registrationNumber": "132"
    }
]

然而我希望它看起来像这样......

[{
    name: "john doe",
    value: {
        registration: 334,
        last: "doe",
        first: "john"
    }
}]

所以我一直在做的就是将它映射出来...但它只获得第一个。

var list = [{
    name: $scope.users[0].firstName + ' ' + $scope.users[0].lastName,
    value: {
        registration: $scope.users[0].registrationNumber,
        first: $scope.users[0].firstName,
        last: $scope.users[0].lastName
    }
}];

我尝试使用angular.forEach获取所有列表并推送它......但是还没有真正运行得太好......任何帮助都会很棒!

1 个答案:

答案 0 :(得分:3)

解决方案可能是:

var list = $scope.users.map(function(user) {
    return {
        name: user.firstName + ' ' + user.lastName,
        value: {
            registration: user.registrationNumber,
            first: user.firstName,
            last: user.lastName
        }
    };
});

说明

Array.map()遍历现有数组并返回一个新修改过的数组。

因此,您必须在map上使用$scope.users,并为每个user使用您想要返回的新对象。在每次迭代中,您都可以访问每个user。新对象将存储在list内,这将是一个数组。