Javascript 使用数组中的第一个和最后一个元素(日期)在角度工厂/服务中创建obj.name
我有一个Angular service/factory方法,它以数组的形式将参数传递给它,数组包含对象Javascript 使用数组中的第一个和最后一个元素(日期)在角度工厂/服务中创建obj.name,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我有一个Angular service/factory方法,它以数组的形式将参数传递给它,数组包含对象[[[{},{}],{},{}] 此参数中包含的数据由周数组组成,每天的对象由日期和整数值组成。例如{“2017-01-10”:711} 该方法的功能是将每个星期数组分组到一个对象中,并将其整数值相加。例如{“name”:“第1周”,“总计”:3228} 如何获取每个数组的第一个和最后一个元素,并由此创建名称/标签?因此,输出将如下所示:{“name”:“第1周-2017-01-10至2017-
[[[{},{}],{},{}]
此参数中包含的数据由周数组组成,每天的对象由日期和整数值组成。例如{“2017-01-10”:711}
该方法的功能是将每个星期数组分组到一个对象中,并将其整数值相加。例如{“name”:“第1周”,“总计”:3228}
如何获取每个数组的第一个和最后一个元素,并由此创建名称/标签?因此,输出将如下所示:{“name”:“第1周-2017-01-10至2017-01-15”,“总计”:3228}
下面是传递给方法的数据示例:
[
[
{
"2016-11-01": 319
},
{
"2016-11-02": 782
},
{
"2016-11-03": 579
},
{
"2016-11-04": 642
},
{
"2016-11-05": 444
},
{
"2016-11-06": 274
}
],
[
{
"2016-11-07": 319
},
{
"2016-11-08": 782
},
{
"2016-11-09": 579
},
{
"2016-11-10": 642
},
{
"2016-11-11": 444
},
{
"2016-11-12": 274
},
{
"2016-11-13": 481
}
]
]
function assignWeekNamesAndTotals(arrayOfWeeks) {
var data = arrayOfWeeks;
var result = data.reduce(function (p, c, i) {
var total = c.reduce(function (total, obj) {
for (var k in obj) {
total += obj[k]; // calculate total
}
return total;
}, 0);
// Format object in any format you want
var tmp = {};
tmp.name = "Week " + (i + 1)
tmp.total = total;
p.push(tmp)
return p;
}, [])
console.log("Assign Week names and Totals Output (Step 2: " + JSON.stringify(result, null, " "));
return result;
}
[
{
"name": "Week: from 2017-01-10 to 2017-01-15",
"total": 3228
},
{
"name": "Week: from 2017-01-16 to 2017-01-16",
"total": 363
}
]
方法如下:
[
[
{
"2016-11-01": 319
},
{
"2016-11-02": 782
},
{
"2016-11-03": 579
},
{
"2016-11-04": 642
},
{
"2016-11-05": 444
},
{
"2016-11-06": 274
}
],
[
{
"2016-11-07": 319
},
{
"2016-11-08": 782
},
{
"2016-11-09": 579
},
{
"2016-11-10": 642
},
{
"2016-11-11": 444
},
{
"2016-11-12": 274
},
{
"2016-11-13": 481
}
]
]
function assignWeekNamesAndTotals(arrayOfWeeks) {
var data = arrayOfWeeks;
var result = data.reduce(function (p, c, i) {
var total = c.reduce(function (total, obj) {
for (var k in obj) {
total += obj[k]; // calculate total
}
return total;
}, 0);
// Format object in any format you want
var tmp = {};
tmp.name = "Week " + (i + 1)
tmp.total = total;
p.push(tmp)
return p;
}, [])
console.log("Assign Week names and Totals Output (Step 2: " + JSON.stringify(result, null, " "));
return result;
}
[
{
"name": "Week: from 2017-01-10 to 2017-01-15",
"total": 3228
},
{
"name": "Week: from 2017-01-16 to 2017-01-16",
"total": 363
}
]
我感谢你的指导 我可以通过以下操作创建解决方案:
[
[
{
"2016-11-01": 319
},
{
"2016-11-02": 782
},
{
"2016-11-03": 579
},
{
"2016-11-04": 642
},
{
"2016-11-05": 444
},
{
"2016-11-06": 274
}
],
[
{
"2016-11-07": 319
},
{
"2016-11-08": 782
},
{
"2016-11-09": 579
},
{
"2016-11-10": 642
},
{
"2016-11-11": 444
},
{
"2016-11-12": 274
},
{
"2016-11-13": 481
}
]
]
function assignWeekNamesAndTotals(arrayOfWeeks) {
var data = arrayOfWeeks;
var result = data.reduce(function (p, c, i) {
var total = c.reduce(function (total, obj) {
for (var k in obj) {
total += obj[k]; // calculate total
}
return total;
}, 0);
// Format object in any format you want
var tmp = {};
tmp.name = "Week " + (i + 1)
tmp.total = total;
p.push(tmp)
return p;
}, [])
console.log("Assign Week names and Totals Output (Step 2: " + JSON.stringify(result, null, " "));
return result;
}
[
{
"name": "Week: from 2017-01-10 to 2017-01-15",
"total": 3228
},
{
"name": "Week: from 2017-01-16 to 2017-01-16",
"total": 363
}
]
我在我的方法中创建了一个创建日期数组的方法。然后,我简单地使用数组中的第一个和最后一个元素作为周期
function assignWeekNamesAndTotals(arrayOfWeeks) {
var data = arrayOfWeeks;
var result = data.reduce(function (p, c, i) {
var dateArray = [];
var createDateArray = c.forEach(function (obj) {
var dateFromObj = Object.keys(obj)[0];
dateArray.push(dateFromObj);
return dateArray;
});
var total = c.reduce(function (total, obj) {
for (var k in obj) {
total += obj[k]; // calculate total
}
return total;
}, 0);
// Format object in any format you want
var tmp = {};
var first = dateArray[0];
var last = dateArray[dateArray.length - 1]
tmp.name = "Week: from " + first + " to " + last;
tmp.total = total;
p.push(tmp)
return p;
}, [])
console.log("Assign Week names and Totals Output (Step 2: " + JSON.stringify(result, null, " "));
return result;
}
输出如下:
[
[
{
"2016-11-01": 319
},
{
"2016-11-02": 782
},
{
"2016-11-03": 579
},
{
"2016-11-04": 642
},
{
"2016-11-05": 444
},
{
"2016-11-06": 274
}
],
[
{
"2016-11-07": 319
},
{
"2016-11-08": 782
},
{
"2016-11-09": 579
},
{
"2016-11-10": 642
},
{
"2016-11-11": 444
},
{
"2016-11-12": 274
},
{
"2016-11-13": 481
}
]
]
function assignWeekNamesAndTotals(arrayOfWeeks) {
var data = arrayOfWeeks;
var result = data.reduce(function (p, c, i) {
var total = c.reduce(function (total, obj) {
for (var k in obj) {
total += obj[k]; // calculate total
}
return total;
}, 0);
// Format object in any format you want
var tmp = {};
tmp.name = "Week " + (i + 1)
tmp.total = total;
p.push(tmp)
return p;
}, [])
console.log("Assign Week names and Totals Output (Step 2: " + JSON.stringify(result, null, " "));
return result;
}
[
{
"name": "Week: from 2017-01-10 to 2017-01-15",
"total": 3228
},
{
"name": "Week: from 2017-01-16 to 2017-01-16",
"total": 363
}
]