Necesito ayuda con esto, he estado atascado durante horas.
Intentando iterar a través de una matriz de objetos en el nodo para tomar uno de los valores de la clave y realizar una función de expresión regular.
Sigo recibiendo errores de lectura indefinidos, el último es
No se pueden leer las propiedades de undefined (leyendo 'split')
La matriz se crea llamando a toArray() en una función de búsqueda de colección de MongoDB:
"ups": [ { "_id": "61b5ef3a8bec102408f5289e", "article_code": "4325832", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" }, { "_id": "61b5ef3a8bec102408f528b4", "article_code": "6242665", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" }, { "_id": "61b5ef3a8bec102408f528ef", "article_code": "3610890", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" } ]Aquí está mi intento de código:
for(let i = 0; i < ups.length; i++) { var ups_tt = i['tt_url']; var unique_id = i['unique_id']; var spl = ups_tt.split(/tracknum=(.*)/)[1]; ups_tt = spl.split("&")[0]; }Cualquier ayuda sería apreciada.
entonces, en su ejemplo, i es solo un número, por lo que si intenta obtener una clave de un número, obtendrá undefined
> let i = 1; undefined > i["test"] undefined lo que debe hacer es hacer referencia a la matriz ups con el índice:
for(let i = 0; i < ups.length; i++){ var ups_tt = ups[i].tt_url; var unique_id = ups[i].unique_id; var spl = ups_tt.split(/tracknum=(.*)/)[1]; ups_tt = spl.split("&")[0];Prueba de esta manera:
let y = { "ups": [ { "_id": "61b5ef3a8bec102408f5289e", "article_code": "4325832", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" }, { "_id": "61b5ef3a8bec102408f528b4", "article_code": "6242665", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" }, { "_id": "61b5ef3a8bec102408f528ef", "article_code": "3610890", "order_number": "", "status": "shipped", "tt_url": "https://www.ups.com/track?loc=en_US&tracknum=999&requester=ST/trackdetails", "unique_id": "" } ] } y.ups.forEach(element => { console.log(element) });dado que la URL es lo suficientemente simple, puede dividirla directamente por "&", sin necesidad de usar expresiones regulares
asi que:
ups_tt = ups_tt.split('&')[2]; var spl = "&" + ups_tt;