Tengo la siguiente matriz de objetos. ¿Cómo cambio las claves de la matriz (0,1) al skipperid (217,1)?
[0: { "type": "RES", "date": "2022-05-14", "doy": 133, "skipperid": 217, "boat": "Laura", "start": "09:00:00", "end": "22:00:00", "spots": 5, "fname": "David", "lname": "Cross" }, 1:{ "type": "SAIL", "date": "2022-05-14", "doy": 133, "skipperid": 1, "boat": "Avrora", "start": "10:00:00", "end": "13:00:00", "spots": 3, "fname": "Bob", "lname": "Smith" } ]Las matrices de Javascript siempre tienen índices numéricos. Si desea tener claves, deberá convertirlas en un objeto como se muestra aquí.
let data = [{ "type": "RES", "date": "2022-05-14", "doy": 133, "skipperid": 217, "boat": "Laura", "start": "09:00:00", "end": "22:00:00", "spots": 5, "fname": "David", "lname": "Cross" }, { "type": "SAIL", "date": "2022-05-14", "doy": 133, "skipperid": 1, "boat": "Avrora", "start": "10:00:00", "end": "13:00:00", "spots": 3, "fname": "Bob", "lname": "Smith" } ] data = data.reduce((b,a) => ({...b, [a.skipperid]:a}), {}); console.log(data['217'])Definitivamente sugiero usar un objeto como el ejemplo de @Kinglish.
Mover la posición del índice actual al índice por skipperid crea una matriz de tamaño ( skiperid más alto ), dejando todo index != skipperid como undefined
UTILIZAR UN OBJETO
esto es desordenado :
let data = [{ "type": "RES", "date": "2022-05-14", "doy": 133, "skipperid": 217, "boat": "Laura", "start": "09:00:00", "end": "22:00:00", "spots": 5, "fname": "David", "lname": "Cross" }, { "type": "SAIL", "date": "2022-05-14", "doy": 133, "skipperid": 1, "boat": "Avrora", "start": "10:00:00", "end": "13:00:00", "spots": 3, "fname": "Bob", "lname": "Smith" } ] data.forEach((o,i,self)=> { if(o?.skipperid != i){ self[o.skipperid] = o; self[i] = undefined } }) console.log(data)Observaciones :
JSON que proporcionó no es un JSON válido.object en lugar de una array .Demostración de trabajo:
const arr = [{ "type": "RES", "date": "2022-05-14", "doy": 133, "skipperid": 217, "boat": "Laura", "start": "09:00:00", "end": "22:00:00", "spots": 5, "fname": "David", "lname": "Cross" }, { "type": "SAIL", "date": "2022-05-14", "doy": 133, "skipperid": 1, "boat": "Avrora", "start": "10:00:00", "end": "13:00:00", "spots": 3, "fname": "Bob", "lname": "Smith" } ]; const obj = {}; arr.forEach((item) => { obj[item.skipperid] = item }); console.log(obj)