我有一个json,其中只有当前年份的数据,日期是ISODATE格式,我如何,角度1按月分隔json对象,例如,将数据抛给另一个json,对应于变量日期上定义的月份。
我做了以下工作:
.then(function(resp) {
vm.acoesAno = resp.data
angular.forEach(vm.acoesAno, function(value, key){
angular.forEach(vm.acoesAno, function(value, key){
const date = new Date(value.data)
const mes = date.getMonth()
if (mes == 0){
vm.jan = vm.acoesAno[key]
} else if (mes == 1){
vm.fev = vm.acoesAno[key]
} else if (mes == 2){
vm.mar = vm.acoesAno[key]
} else if (mes == 3){
vm.abr = vm.acoesAno[key]
} else if (mes == 4){
vm.mai = vm.acoesAno[key]
} else if (mes == 5){
vm.jun = vm.acoesAno[key]
} else if (mes == 6){
vm.jul = vm.acoesAno[key]
} else if (mes == 7){
vm.ago = vm.acoesAno[key]
} else if (mes == 8){
vm.set = vm.acoesAno[key]
} else if (mes == 9){
vm.out = vm.acoesAno[key]
} else if (mes == 10){
vm.nov = vm.acoesAno[key]
} else if (mes == 11){
vm.dez = vm.acoesAno[key]
}
})
})
console.log("mes de maio: ", vm.mai)}json vm.acoesAno中有两个对象是在5月份注册的,但是在forEach外部的变量中,我只得到了1个对象,forEach中的变量存储了这两个对象。
JSON数据vm.acoesAno:
{
data : "2018-05-06T03:00:00.000Z",
longitude : "-52.018375",
latitude : "-27.226520",
dataCadastro : "2018-05-22T02:57:01.443Z"
}但是在json中有几个日期不同的对象。
@vol7ron
发布于 2018-05-26 01:18:47
您可以使用Array.prototype.filter和regex匹配特定月份来筛选数据。
// if you want to make it efficient, you can do something
.then(function(resp) {
const data = resp.data;
vm.jan = [];
vm.fev = [];
// initialize all arrays to empty array
vm.acoesAno = data;
data.forEach(item => {
if (/(.*)-01-(.*)/.test(item.data)){
vm.jan.push(item);
} else if (/(.*)-02-(.*)/.test(item.data)){
vm.fev.push(item);
} else if (/(.*)-03-(.*)/.test(item.data)){
vm.mar.push(item);
}
// and so on
});
// 2nd method
.then(function(resp) {
const data = resp.data;
vm.acoesAno = data;
vm.jan = data.filter(item => /(.*)-01-(.*)/.test(item.data);
vm.fev = data.filter(item => /(.*)-02-(.*)/.test(item.data);
vm.mar = data.filter(item => /(.*)-03-(.*)/.test(item.data);
vm.abr = data.filter(item => /(.*)-04-(.*)/.test(item.data);
// and so on for all other months
});
发布于 2018-05-26 01:16:33
对角不太熟悉了,但是:
vm.mai = vm.acoesAno[key]),而不是添加到集合或数组中,这意味着您要在每次迭代中覆盖
.then(function(resp) {
vm.acoesAno = resp.data
let grouped = {}
angular.forEach(vm.acoesAno, function(value, key, obj) {
const date = new Date(value.data)
const mes = date.getMonth()
if (typeof grouped[+mes] == 'undefined')
grouped[+mes]=[]
grouped[+mes].push(obj);
})
console.log("mes de maio: ", grouped[4])
})<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
https://stackoverflow.com/questions/50538393
复制相似问题