Tengo una matriz en este formato.
const Adicionais = [{ ID: 0, Nome: 'Adiocinais Açai', MaxOpcoes: 3, Itens: [{ Nome: 'Morango', Valor: 5.00, ID: 0, }, { Nome: 'Raspas de Chocolate', Valor: 5.00, ID: 1, }, { Nome: 'Biz de Chocolate', Valor: 5.00, ID: 2, }] }]Necesito obtener el valor del índice VALOR dentro de la matriz ITENS y SUMAR el valor de todos los elementos que tengo una identificación guardada en otra matriz de elementos seleccionados. Intenté hacer esto de esa forma
const ValorAdicionas = ProdutoAdicionais.filter((item) => (item.Itens.filter((a) => (adicionaisChecked.includes(a.ID))).reduce((a, v) => a = a + v.Valor, 0))) pero no funciona. La matriz ProdutosAdicionais tiene el valor de la matriz Adicionais , y la matriz adicionaisChecked tiene el ID de la matriz Itens
Espero que este código te ayude.
const Adicionais = [{ ID: 0, Nome: 'Adiocinais Açai', MaxOpcoes: 3, Itens: [{ Nome: 'Morango', Valor: 5.00, ID: 0, }, { Nome: 'Raspas de Chocolate', Valor: 5.00, ID: 1, }, { Nome: 'Biz de Chocolate', Valor: 5.00, ID: 2, }] }] adicionaisChecked = [0,1] Adicionais.map(o=>o.Itens.filter(v=>adicionaisChecked.indexOf(v.ID) != -1)).map(k=>k.reduce((sum, prev)=>sum + prev.Valor,0)) const adicionaisChecked=[1]; const ProdutoAdicionais = [{ ID: 0, Nome: 'Adiocinais Açai', MaxOpcoes: 3, Itens: [{ Nome: 'Morango', Valor: 5.00, ID: 0, }, { Nome: 'Raspas de Chocolate', Valor: 5.00, ID: 1, }, { Nome: 'Biz de Chocolate', Valor: 5.00, ID: 2, }] }] const valorAdicionas = ProdutoAdicionais.reduce((acc,item)=>{ return acc.concat(item.Itens.filter(a=>adicionaisChecked.includes(a.ID))) },[]).reduce((a,v)=>a+v.Valor,0); console.log(valorAdicionas);