¡Los valores dados por la matriz están en orden ascendente!
Quiero obtener una secuencia aritmética con una diferencia de 1 y el valor inicial debe ser 0.
Presumiblemente, el código proporciona una buena solución en todos los casos. Creo que esta es una solución demasiado complicada, debe haber una más fácil. ¿Qué podría ser?
let arr = [{x: "a",num:4},{x: "f",num:5},{x: "k",num:7},{x: "d",num:9}]; let firstVal = arr[0].num; let j = 0; while(j != firstVal) { arr.splice(j,0,{x: "temp",num:j}); j++; } let i = 0; while(arr[arr.length - 1].num != i+1) { if(arr[i].num + 1 != arr[i+1].num) { arr.splice(i+1,0,{x: "temp",num:i+arr[0].num+1}); } i++; }Producción:
0: {x: 'temp', num: 0} 1: {x: 'temp', num: 1} 2: {x: 'temp', num: 2} 3: {x: 'temp', num: 3} 4: {x: 'a', num: 4} 5: {x: 'f', num: 5} 6: {x: 'temp', num: 6} 7: {x: 'k', num: 7} 8: {x: 'temp', num: 8} 9: {x: 'd', num: 9} let arr = [{x: "a",num:4},{x: "f",num:5},{x: "k",num:7},{x: "d",num:9}]; let num = 0; while (arr.length !== 0) { let found = arr.findIndex(item => item.num === num); if (found !== -1) { console.log(arr[found]); arr.splice(found,1); } else { console.log({x: "temp", num: num}); } num++; }