Tengo un conjunto de matrices y estoy tratando de cambiar el guión en las fechas a barras, pero el reemplazo /g no funciona cuando lo uso en un método de mapa.
let set1 = [['Jones', 'Ann', 'F', '6-3-1975', 'Red'], ['Perez', 'Maria', 'F', '4-2-1979', 'Green'], ['Samuels', 'Rika', 'M', '12-2-1973', 'Black']] set1.map(arr => arr[3].replace(/-/g, "/")) console.log(set1)El resultado debe ser como se muestra a continuación, pero los guiones no cambian
['Jones', 'Ann', 'F', '6/3/1975', 'Red'], ['Perez', 'Maria', 'F', '4/2/1979', 'Green'], ['Samuels', 'Rika', 'M', '12/2/1973', 'Black']Array.map no muta la matriz original. Debe asignar el resultado después de mapear de nuevo a set1 .
También tendrá que asignar el resultado después de reemplazar de nuevo el elemento en el índice 3 y devolver arr en la función de mapa.
let set1 = [['Jones', 'Ann', 'F', '6-3-1975', 'Red'], ['Perez', 'Maria', 'F', '4-2-1979', 'Green'], ['Samuels', 'Rika', 'M', '12-2-1973', 'Black']] set1 = set1.map(arr => (arr[3] = arr[3].replace(/-/g, "/"), arr)) console.log(set1) Si no desea crear uno nuevo, use Array.forEach :
let set1 = [['Jones', 'Ann', 'F', '6-3-1975', 'Red'], ['Perez', 'Maria', 'F', '4-2-1979', 'Green'], ['Samuels', 'Rika', 'M', '12-2-1973', 'Black']] set1.forEach(arr => arr[3] = arr[3].replace(/-/g, "/")) console.log(set1)Otra respuesta, pero usando forEach en su lugar. Esto puede usar menos memoria en comparación con el enfoque de map .
let set1 = [['Jones', 'Ann', 'F', '6-3-1975', 'Red'], ['Perez', 'Maria', 'F', '4-2-1979', 'Green'], ['Samuels', 'Rika', 'M', '12-2-1973', 'Black']] set1.forEach(arr => arr[3] = arr[3].replace(/-/g, "/")) console.log(set1)La función .map() espera que devuelva el elemento completo que desea que esté en la matriz resultante. Por lo tanto, debe devolver el valor de arr completo, no solo la cadena de fecha.
let set1 = [ ['Jones', 'Ann', 'F', '6-3-1975', 'Red'], ['Perez', 'Maria', 'F', '4-2-1979', 'Green'], ['Samuels', 'Rika', 'M', '12-2-1973', 'Black'] ]; set1 = set1.map(arr => { arr[3] = arr[3].replace(/-/g, "/"); return arr; }); console.log(set1);