Tengo el siguiente objeto obj (viene como una respuesta JSON):
var obj = { 0: { note: 'test1', id: 24759045, createTimeStamp: '2022-08-01T17:05:36.750Z', }, 1: { note: 'test2', id: 24759045, createTimeStamp: '2022-08-01T17:05:51.755Z', }, note: 'test1', id: 24759045, createTimeStamp: '2022-08-01T17:05:36.750Z', };Solo quiero que los objetos con números ("0", "1" .. etc.) se inserten en una matriz.
A continuación se muestra lo que estoy tratando de hacer:
let items = []; for (var prop in obj) { items.push(obj[prop]); } console.log(items);// Rendimiento esperado:
[ { note: 'test1', id: 24759045, createTimeStamp: '2022-08-01T17:05:36.750Z', }, { note: 'test2', id: 24759045, createTimeStamp: '2022-08-01T17:05:51.755Z', }, ]Cualquier sugerencia sería muy apreciada.
Algunas cosas a considerar aquí.
Primera solución, asumiendo que las claves numéricas son el índice en la matriz.
const items = Object.keys(obj).reduce((acc, key) => { const index = parseInt(key); if (Number.isNaN(index)) { return acc; } acc[index] = obj[key]; return acc; }, []);Segunda solución, suponiendo que el orden importa, pero que no se garantiza que las teclas numéricas sean contiguas.
const items = Object.keys(obj) .filter((key) => Number.isNaN(parseInt(key)) === false) .sort() .map((key) => obj[key]);Tenga en cuenta que Object.keys no garantiza que las claves estén ordenadas alfanuméricamente. Entonces, si el orden importa, entonces debes ordenarlos.
Tercera solución, si el orden no importa.
const items = Object.keys(obj) .filter((key) => Number.isNaN(parseInt(key)) === false) .map((key) => obj[key]); var result = []; var obj = { "0": { "note": "test1", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:36.750Z" }, "1": { "note": "test2", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:51.755Z" }, "note": "test1", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:36.750Z" } for (var i in obj) result.push(obj[i]); $('#result').html(JSON.stringify(result)); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div id="result"></div>Puede lograr esto siguiendo los siguientes pasos.
Copié tu objeto a continuación -->
var obj = { "0": { "note": "test1", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:36.750Z" }, "1": { "note": "test2", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:51.755Z" }, "note": "test1", "id": 24759045, "createTimeStamp": "2022-08-01T17:05:36.750Z" }Creó una nueva matriz js -->
var result = [];Código -->
for (var i in obj) result.push(obj[i]);Encuentre la solución en el enlace a continuación también --> :) :)
Creo que necesitará obtener las claves del objeto, filtrar las no numéricas y luego asignar cada clave al obj[clave]:
var obj={"0":{"note":"test1","id":24759045, "createTimeStamp":"2022-08-01T17:05:36.750Z"},"1":{"note":"test2","id":24759045, "createTimeStamp":"2022-08-01T17:05:51.755Z"}, "note":"test1","id":24759045,"createTimeStamp":"2022-08-01T17:05:36.750Z"}; console.log( Object.keys(obj) .filter((key) =>!Number.isNaN(parseInt(key))) .map((key) => obj[key]) )