Mi matriz es así:
let dup= [ { "category": "snacks", "id": 1, "data": [ { "id": 11, "title": "choclate", "subItem": [], "count": 0 }, { "id": 1, "title": "Protein Bar", "subItem": [], "count": 0 } ] }, { "category": "beverages", "id": 2, "data": [ { "id": 2, "title": "Tea", "subItem": [ { "id": 1, "title": "sugar", "status": 1, "createdAt": "2021-11-10T03:35:02.500Z", "updatedAt": "2021-11-10T03:35:02.500Z" } ], "count": 0 }, { "id": 3, "title": "Coffee", "subItem": [ { "id": 1, "title": "sugar", "status": 1, "createdAt": "2021-11-10T03:35:02.500Z", "updatedAt": "2021-11-10T03:35:02.500Z" } ], "count": 0 } ] } ]Estaba tratando de cambiar el conteo (como un carrito de compras)
Traté de resolver el problema con la función anterior, pero no obtengo el resultado requerido. La matriz no se cambia.
function getNewCartItems() { let newvar= dup.map(element => (element = element.data.map(item => (item.id === action.item.id ? {...item, count: item.count+1} : item)))); return newvar; }map devolverá una nueva matriz con los cambios realizados por la devolución de llamada. Desea devolver esa matriz. Lo más fácil sería declararlo como una variable y devolverlo:
const newCart = dup.map(...) return newCartResuelto por lo siguiente:
function getNewCartItems() { const newArr = state.data?.map(element => { return { ...element, data: element?.data?.map(item => (item.id === action.item.id ? {...item, count: item.count + 1} : item)), }; }); return newArr; }