首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sports_id获取数组值

使用sports_id获取数组值
EN

Stack Overflow用户
提问于 2016-07-25 19:26:43
回答 1查看 56关注 0票数 1

我有一个函数,它返回一个对象数组data.sportdata。我想要获得具有相同sports_id的所有数组元素。代码

代码语言:javascript
复制
$scope.arrSportData = data.sportdata;
angular.forEach($scope.arrSportData, function(value, key) {
    console.log($scope.arrSportData);
    //getting reponse
    /*
        Object { id: "1", user_id: "2", sport_id: "1", position_id: "1", team_name: "JimmyTmname",}
        Object { id: "2", user_id: "2", sport_id: "2", position_id: "6", team_name: "JimmyTmname2",}
        Object { id: "3", user_id: "2", sport_id: "3", position_id: "12", team_name: "JimmyTmname3",}
        Object { id: "4", user_id: "2", sport_id: "5", position_id: "20", team_name: "JimmyTmname5",}
    */

    //code i wrote
    if (value.sport_id == 1) {
        $scope.positionId.spr1 = value.position_id;
        $scope.teamname.spr1 = value.team_name;
    }
    if (value.sport_id == 2) {
        $scope.positionId.spr2 = value.position_id;
        $scope.teamname.spr2 = value.team_name;
    }
    if (value.sport_id == 3) {
        $scope.positionId.spr3 = value.position_id;
        $scope.teamname.spr3 = value.team_name;
    }
    if (value.sport_id == 4) {
        $scope.positionId.spr4 = value.position_id;
        $scope.teamname.spr4 = value.team_name;
    }
});

在这里,我总是得到第一个值,仅此而已。请提出建议并帮助解决此问题。

我确实在循环之外尝试过,但不起作用。我认为过滤器功能可以做到这一点,但不知道它是如何工作的。

EN

回答 1

Stack Overflow用户

发布于 2016-07-25 21:53:44

执行一个groupBy函数,它会给出一个如下所示的对象

代码语言:javascript
复制
{ 
    key: [],
    key: []
}

这里的关键字是sport_id,[]将是具有相同关键字的项。

一个最小的工作示例是,

代码语言:javascript
复制
// Written By: Ceaser Bautista
//Link: http://stackoverflow.com/a/34890276/17447
var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};

//here we have four teams with two sports id 13 and 22
var arrSportData = [{
  id: "1",
  user_id: "1",
  sport_id: "13",
  position_id: "1",
  team_name: "JimmyTmname"
}, {
  id: "2",
  user_id: "2",
  sport_id: "22",
  position_id: "6",
  team_name: "JimmyTmname2"
}, {
  id: "3",
  user_id: "3",
  sport_id: "22",
  position_id: "12",
  team_name: "JimmyTmname2",
}, {
  id: "4",
  user_id: "4",
  sport_id: "13",
  position_id: "20",
  team_name: "JimmyTmname1"
}];

$scope.groupedData = groupBy(arrSportData, "sport_id");
console.log(groupedData);

现在,您将为每个sports_id创建一个数组。在视图中填充它,如下所示

代码语言:javascript
复制
<div ng-repeat="(key, items) in groupedData">
    <h4>Sports ID: {{key}}</h4>
    <ul ng-repeat="item in items">
        <li>User ID: {{item.user_id}}</li>
    </ul>
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38566519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档