Necesita convertir el tipo de registro en Typescript/Javascript a matriz con una propiedad específica
const store: Record<ProductID, ProductObject> = { 'france': productObject:{ present: 'in_stock', amount: 23, }, 'uk': productObject:{ present: 'in_stock', amount: 20, }, 'japan': productObject:{ present: 'no_stock', amount: 0, }, }Salida : Creación de nueva matriz. Agregar nueva clave como 'país' y tomar solo la propiedad 'cantidad' del tipo de registro de la tienda.
const newArrayFromRecord = [ {country: 'france', amount: 23}, {country: 'uk', amount: 20} {country: 'japan', amount: 0} ]Lo intenté con Object.entries() y luego presioné Array. Pero todos requieren código innecesario. ¿Hay alguna manera eficiente de hacer ...
Simplemente puede recorrer el objeto de la tienda usando un bucle for in .
O mapeándolo con Object.keys .
Aparte de eso, no creo que haya realmente una solución más "eficiente".
const store = { france: { present: "in_stock", amount: 23, }, uk: { present: "in_stock", amount: 20, }, japan: { present: "no_stock", amount: 0, }, }; const result = []; for (const country in store) { result.push({ country, amount: store[country].amount }); } const result_2 = Object.keys(store).map((country) => ({ country, amount: store[country].amount, })); console.log(result); console.log(result_2);Esta es una forma posible de lograr el objetivo:
Object.entries(store).map(([k, v]) => ({ country: k, amount: v.amount }))Fragmento de código usando JS:
const store = { 'france': { present: 'in_stock', amount: 23, }, 'uk': { present: 'in_stock', amount: 20, }, 'japan': { present: 'no_stock', amount: 0, }, }; console.log( 'result: ', Object.entries(store).map(([k, v]) => ({ country: k, amount: v.amount })) );Y, aquí hay un enlace de TypeScript Playground .
Uso Object.entries y destructuring
const data = { 'france': { present: 'in_stock', amount: 23, }, 'uk': { present: 'in_stock', amount: 20, }, 'japan': { present: 'no_stock', amount: 0, }, }; const res = Object.entries(data).map(([country, { amount }]) => ({ country, amount, })); console.log(res);