Tengo la siguiente cadena: area = "73,159,160,178,165,340,70,382" ; Y necesito convertirlo al siguiente formato:
area = [ { "x": 73, "y": 159, }, { "x": 160, "y": 178, }, { "x": 165, "y": 340, }, { "x": 70, "y": 382, } ]Puedo comenzar convirtiéndolo en una matriz normal:
JSON.parse("[" + area + "]")Pero ahora estoy atascado en cómo hacer los objetos anidados. ¿Cómo sabría ahora cuál es cualquier otro número par e impar y lo asignaría al objeto correspondiente?
Puede dividir la cadena por una coma y usar un bucle for para recorrer la matriz resultante y construir los objetos:
const str = "73,159,160,178,165,340,70,382" const split = str.split(",") const arr = [] for(let i = 0; i < split.length; i++){ arr.push({"x":split[i], "y":split[++i]}) } console.log(arr)Aquí hay una alternativa usando regex
let area = "73,159,160,178,165,340,70,382" let regex = /\d+,\d+/g match = area.match(regex).map(match => { let [x, y] = match.split(",") return {x, y} }) console.log(match)¿Creo que esto es lo que estás tratando de lograr? tenga en cuenta que no agregué un código para verificar si la cantidad de elementos en la matriz será par o no, por lo que si su área nueva es impar, esta función fallará
function Convert(arrayOfArea){ let Converted = []; let count = arrayOfArea.length/2; let mod = arrayOfArea.length%2; for(let i = 0; i < count; i++){ Converted.push({x:0 , y:0}); Converted[i].x = arrayOfArea[i] Converted[i].y = arrayOfArea[i+1]; } return Converted; } let strArea = "73,159,160,178,165,340,70,382"; let newArea = JSON.parse("["+strArea+"]"); console.log(Convert(newArea));