Estoy usando matrices dispersas para que la memoria sea eficiente con grandes conjuntos de datos. (y para señalar la diferencia entre un agujero y una entrada undefined o null ) agregar agujeros al final está bien configurando datapoints.lentgh .
datapoints = [10,,,20,,,10,1]No, me enfrento al problema de cómo insertar un agujero (digamos antes de 20)
datapoint.splice(3,0) no funciona, y no puedo encontrar un método (fácil) para insertar agujeros. (Creo que tengo que reconstruir la matriz, pero pensé en preguntar antes) ¿O hay alguna forma de cambiar una entrada "definida" en un agujero? delete datapoint[4]; crea una entrada indefinida, no un agujero :(
Su matriz dispersa es en realidad un objeto. Puede eliminar elementos y puede agregar elementos.
Supongamos que desea agregar k agujeros antes del offset de posición. Después:
datapoints = [10,,,20,,,10,1]; function addHoles(offset, k, datapoints) { let migration = {}; for (let key in datapoints) { let intKey = parseInt(key); if (intKey >= offset) { migration[intKey] = datapoints[intKey]; delete datapoints[intKey]; } } for (let key in migration) { let intKey = parseInt(key); datapoints[intKey + k] = migration[intKey]; } return datapoints; } console.log(addHoles(3, 3, datapoints));Creo que podría trabajar con
datapoint.splice(3,0,undefined); delete datapoint[3]Parece que ahora tengo un agujero....