Javascript 如何添加嵌套数组的属性
我对我的逻辑没有什么异议 我有一个手风琴,我拍了张照片 HTML中有头条直播博彩、MLB、MLB道具和NBA(实际上是一个包含近25项运动的列表) 使用这个Javascript 如何添加嵌套数组的属性,javascript,angularjs,lodash,Javascript,Angularjs,Lodash,我对我的逻辑没有什么异议 我有一个手风琴,我拍了张照片 HTML中有头条直播博彩、MLB、MLB道具和NBA(实际上是一个包含近25项运动的列表) 使用这个console.log(angular.toJson($scope.sports,'pretty')我得到了这个json 如您所见,标题,例如:第一个标题:LIVE Boting,包含一个数组leagues,其中有一个名为OfferingSavaailable的道具,因此我需要将每个OfferingSavaailable放在里面,并将总额放
console.log(angular.toJson($scope.sports,'pretty')代码>我得到了这个json
如您所见,标题,例如:第一个标题:LIVE Boting,包含一个数组leagues
,其中有一个名为OfferingSavaailable
的道具,因此我需要将每个OfferingSavaailable
放在里面,并将总额放入$scope
变量中,以便在DOM中显示它
[
{
"id": 26,
"name": "LIVE BETTING",
"priority": 0,
"leagues": [
{
"id": "3042",
"composedId": "3042G",
"name": "NBA - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 3,
"sport": {
"id": 26
}
},
{
"id": "3042",
"composedId": "3044Q",
"name": "NBA - Live (2Q)",
"lineType": "Q",
"part": 2,
"offeringsAvailable": 2,
"sport": {
"id": 26
}
},
{
"id": "3042",
"composedId": "3045Q",
"name": "NBA - Live (3Q)",
"lineType": "Q",
"part": 3,
"offeringsAvailable": 2,
"sport": {
"id": 26
}
},
{
"id": "3042",
"composedId": "3046Q",
"name": "NBA - Live (4Q)",
"lineType": "Q",
"part": 4,
"offeringsAvailable": 2,
"sport": {
"id": 26
}
},
{
"id": "3068",
"composedId": "3068G",
"name": "Soccer - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 41,
"sport": {
"id": 26
}
},
{
"id": "3295",
"composedId": "3295G",
"name": "MLB - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 19,
"sport": {
"id": 26
}
},
{
"id": "3314",
"composedId": "3314G",
"name": "Tennis - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 1,
"sport": {
"id": 26
}
},
{
"id": "6250",
"composedId": "6250G",
"name": "NHL - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 4,
"sport": {
"id": 26
}
},
{
"id": "6250",
"composedId": "6252P",
"name": "NHL - Live (2P)",
"lineType": "P",
"part": 2,
"offeringsAvailable": 2,
"sport": {
"id": 26
}
},
{
"id": "6250",
"composedId": "6253P",
"name": "NHL - Live (3P)",
"lineType": "P",
"part": 3,
"offeringsAvailable": 2,
"sport": {
"id": 26
}
},
{
"id": "6711",
"composedId": "6711G",
"name": "NCAA Baseball - Live",
"lineType": "G",
"part": 0,
"offeringsAvailable": 1,
"sport": {
"id": 26
}
}
],
"img": "images/icons/icon_live_betting.svg"
},
{
"id": 6,
"name": "MLB",
"priority": 1,
"leagues": [
{
"id": "1496",
"composedId": "1496G",
"name": "MLB",
"lineType": "G",
"part": 0,
"offeringsAvailable": 72,
"sport": {
"id": 6
}
},
{
"id": "1496",
"composedId": "1497I",
"name": "MLB (1I)",
"lineType": "I",
"part": 1,
"offeringsAvailable": 30,
"sport": {
"id": 6
}
},
{
"id": "1496",
"composedId": "1498I",
"name": "MLB (2I)",
"lineType": "I",
"part": 2,
"offeringsAvailable": 30,
"sport": {
"id": 6
}
},
{
"id": "1721",
"id": 6
}
},
{
"id": "2012",
"composedId": "2012T",
"name": "MLB - Alternate Runlines",
"lineType": "T",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 6
}
}
],
"img": "images/icons/icon_mlb.svg"
},
{
"id": 41,
"name": "MLB Props",
"priority": 2,
"leagues": [
{
"id": "6726",
"composedId": "6726G",
"name": "MLB Props - Runs+Hits+Error",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6727",
"composedId": "6727G",
"name": "MLB Props - Team to score 1st",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6728",
"composedId": "6728G",
"name": "MLB Props - 1st inning run?",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6731",
"composedId": "6731G",
"name": "MLB Props - 1st Called pitch",
"lineType": "G",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 41
}
},
{
"id": "6732",
"composedId": "6732G",
"name": "MLB Props - Players Matchups",
"lineType": "G",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 41
}
},
{
"id": "6741",
"composedId": "6741G",
"name": "MLB Props - 1st inning line",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
}
],
"img": "images/icons/icon_mlb.svg"
},
... "composedId": "1721T",
"name": "MLB - Grand Salami",
"lineType": "T",
"part": 0,
"offeringsAvailable": 8,
"sport": {
"id": 6
}
},
{
"id": "2012",
"composedId": "2012T",
"name": "MLB - Alternate Runlines",
"lineType": "T",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 6
}
}
],
"img": "images/icons/icon_mlb.svg"
},
{
"id": 41,
"name": "MLB Props",
"priority": 2,
"leagues": [
{
"id": "6726",
"composedId": "6726G",
"name": "MLB Props - Runs+Hits+Error",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6727",
"composedId": "6727G",
"name": "MLB Props - Team to score 1st",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6728",
"composedId": "6728G",
"name": "MLB Props - 1st inning run?",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
},
{
"id": "6731",
"composedId": "6731G",
"name": "MLB Props - 1st Called pitch",
"lineType": "G",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 41
}
},
{
"id": "6732",
"composedId": "6732G",
"name": "MLB Props - Players Matchups",
"lineType": "G",
"part": 0,
"offeringsAvailable": 30,
"sport": {
"id": 41
}
},
{
"id": "6741",
"composedId": "6741G",
"name": "MLB Props - 1st inning line",
"lineType": "G",
"part": 0,
"offeringsAvailable": 15,
"sport": {
"id": 41
}
}
],
"img": "images/icons/icon_mlb.svg"
},
...
我正在使用LODASH
对数组进行迭代。但我不知道如何才能完成这项任务
编辑
不要感到困惑,因为我上面提到了现场投注,我的意思是,我希望阵列中的每项运动都会发生同样的情况。试试:
// in view, replace
{{sport.leagues.length}}
// with
{{ total(sport) }}
//in controller, add scope method
$scope.total = function(sport) {
return _.sum(_.pluck(sport.leagues, 'offeringsAvailable'));
}
尝试:
尝试:
尝试:
当您收到数据时,建议只在每个运动项目上循环,并添加一个包含总和的offices
属性
sports.forEach(function(sport){
sport.offerings=sport.leagues.reduce(function(prev,curr){
return prev + (curr.offeringsAvailable||0);
},0);
});
然后在标题中使用{{sport.offices}}
建议在接收数据时在每个运动上循环,并添加包含总和的offices
属性
sports.forEach(function(sport){
sport.offerings=sport.leagues.reduce(function(prev,curr){
return prev + (curr.offeringsAvailable||0);
},0);
});
然后在标题中使用{{sport.offices}}
建议在接收数据时在每个运动上循环,并添加包含总和的offices
属性
sports.forEach(function(sport){
sport.offerings=sport.leagues.reduce(function(prev,curr){
return prev + (curr.offeringsAvailable||0);
},0);
});
然后在标题中使用{{sport.offices}}
建议在接收数据时在每个运动上循环,并添加包含总和的offices
属性
sports.forEach(function(sport){
sport.offerings=sport.leagues.reduce(function(prev,curr){
return prev + (curr.offeringsAvailable||0);
},0);
});
然后在标题中使用{{sport.offices}}