我有以下代码行:
$scope.listDeColaboradoresObject.forEach(item => {
item.listNmAssunto = $scope.relatorioTotalMensagensRespondidasColab
.filter(x => x.nmUsuario == item.nmUsuario)
.map(x => x.nmAssunto);
item.listNmAssunto = $scope.removeDuplicates(item.listNmAssunto);
item.listDtResposta = $scope.relatorioTotalMensagensRespondidasColab
.filter(x => x.nmUsuario == item.nmUsuario)
.map(x => x.dtResposta);
});
通过该数组运行的
:
0: {deTipoAtendimento: "012", nmAssunto: "Cartão extraviado", nmUsuario: "15", dtResposta: "2018", total: 1}
1: {deTipoAtendimento: "012", nmAssunto: "Assunto Novo 012", nmUsuario: "Admin", dtResposta: "2018", total: 2}
2: {deTipoAtendimento: "012", nmAssunto: "Assunto Novo 012", nmUsuario: "Administrador", dtResposta: "2018", total: 1}
3: {deTipoAtendimento: "012", nmAssunto: "Assunto Novo 012", nmUsuario: "Administrador IMB", dtResposta: "2018", total: 3}
4: {deTipoAtendimento: "012", nmAssunto: "Assunto Teste GREAt", nmUsuario: "Administrador IMB", dtResposta: "2018", total: 2}
5: {deTipoAtendimento: "012", nmAssunto: "Thais 23042018", nmUsuario: "Administrador IMB", dtResposta: "2018", total: 2}
6: {deTipoAtendimento: "012", nmAssunto: "teste Alterado2", nmUsuario: "Administrador IMB", dtResposta: "2018", total: 1}
然后返回以下数组:
0: {nmUsuario: "15", listNmAssunto: Array(1), listDtResposta: Array(1), $$hashKey: "object:2975"}
1: {nmUsuario: "Admin", listNmAssunto: Array(1), listDtResposta: Array(1), $$hashKey: "object:2976"}
2: {nmUsuario: "Administrador", listNmAssunto: Array(1), listDtResposta: Array(1), $$hashKey: "object:2977"}
3: {nmUsuario: "Administrador IMB", listNmAssunto: Array(4), listDtResposta: Array(4), $$hashKey: "object:2978"}
我的问题是我如何在映射时将nmSubject和dtResponse插入同一数组中
答案 0 :(得分:1)
您将执行的代码将仅更新现有阵列。我不确定它如何创建您发布的输出。但是,查看您的输出,我假设您想基于nmUsuario
进行分组,并创建具有2个数组属性的对象数组。您可以使用reduce
,destructiring和Object.values
const input = [{deTipoAtendimento:"012",nmAssunto:"Cartão extraviado",nmUsuario:"15",dtResposta:"2018",total:1},{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Admin",dtResposta:"2018",total:2},{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Administrador",dtResposta:"2018",total:1},{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Administrador IMB",dtResposta:"2018",total:3},{deTipoAtendimento:"012",nmAssunto:"Assunto Teste GREAt",nmUsuario:"Administrador IMB",dtResposta:"2018",total:2},{deTipoAtendimento:"012",nmAssunto:"Thais 23042018",nmUsuario:"Administrador IMB",dtResposta:"2018",total:2},{deTipoAtendimento:"012",nmAssunto:"teste Alterado2",nmUsuario:"Administrador IMB",dtResposta:"2018",total:1}]
const merged = input.reduce((r,{ nmUsuario, nmAssunto, dtResposta }) => {
r[nmUsuario] = r[nmUsuario] || {nmUsuario, listNmAssunto: [], listDtResposta:[]};
r[nmUsuario].listNmAssunto.push(nmAssunto);
r[nmUsuario].listDtResposta.push(dtResposta);
return r;
},{})
const output = Object.values(merged);
console.log(output)
答案 1 :(得分:1)
为什么不映射到一个对象? 像这样:
$scope.listDeColaboradoresObject.forEach(item => {
item.listAssunto = $scope.relatorioTotalMensagensRespondidasColab
.filter(x => x.nmUsuario == item.nmUsuario)
.map(x => {a:x.nmAssunto,b: x.dtResposta});
item.listNmAssunto = $scope.removeDuplicates(item.listAssunto);
});
答案 2 :(得分:1)
根据您的结果评论,您似乎想按nmUsuario
对列表进行分组,但是创建了一个包含相关nmAssunto
和dtResposta
的对象的单个数组。您可以使用reduce()
来实现。基本上,您为每个nmAssunto
创建一个带有空数组的对象,并在每次迭代时将一个新对象推入正确的数组中。然后使用Object.values()
转换为最终输出数组。
const data = [
{deTipoAtendimento:"012",nmAssunto:"Cartão extraviado",nmUsuario:"15",dtResposta:"2018",total:1},
{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Admin",dtResposta:"2018",total:2},
{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Administrador",dtResposta:"2018",total:1},{deTipoAtendimento:"012",nmAssunto:"Assunto Novo 012",nmUsuario:"Administrador IMB",dtResposta:"2018",total:3},
{deTipoAtendimento:"012",nmAssunto:"Assunto Teste GREAt",nmUsuario:"Administrador IMB",dtResposta:"2018",total:2},
{deTipoAtendimento:"012",nmAssunto:"Thais 23042018",nmUsuario:"Administrador IMB",dtResposta:"2018",total:2},
{deTipoAtendimento:"012",nmAssunto:"teste Alterado2",nmUsuario:"Administrador IMB",dtResposta:"2018",total:1}
]
const groups = data.reduce((r, { nmUsuario, nmAssunto, dtResposta }) => {
r[nmUsuario] = r[nmUsuario] || {
nmUsuario,
listAssunto: []
}
r[nmUsuario].listAssunto.push({
a: nmAssunto,
b: dtResposta
})
return r
}, {})
console.log(Object.values(groups))