Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
Cómo agregar un par de valores clave en una matriz de respuesta Mongoose en JavaScript

Traté de hacer cosas básicas. Tengo una matriz que contiene varios objetos. Quiero agregar un nuevo par clave-valor en cada objeto de matriz.

Intenté esto siguiendo el código.

 exports.addBuyOption = (arr) => { var newArr=arr; return new Promise((resolve, reject) => { for (let i = 0; i < newArr.length; i++) { newArr[i].name="new name" //updating the existing key value newArr[i].canBuy=true //new key value } setTimeout(() => { resolve(newArr); }, 2000) }) }

Agregué el tiempo de espera establecido porque solo quería confirmar si la promesa regresó después de la operación de bucle o no. Además, cuando el código no se ejecuta con la matriz de origen, creo una nueva variable con el nombre newArr pero el código tampoco funciona.

 exports.addBuyOption = (arr) => { return new Promise((resolve, reject) => { for (let i = 0; i < arr.length; i++) { arr[i].name="new name" //updating the existing key value arr[i].canBuy=true //new key value } resolve(arr); }) }

Con este código, pude actualizar mi valor clave existente, pero no pude agregar ningún valor clave nuevo. ¿Qué estoy haciendo mal? Traté de cambiar el método de agregar clave del operador de punto a la indexación de matriz a Object.assign pero ninguno de ellos funcionó para mí.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Con este código, pude actualizar mi valor clave existente, pero no pude agregar ningún valor clave nuevo.

La única explicación para eso sería que a los objetos en la matriz se les haya aplicado Object.preventExtensions . Aquí hay un ejemplo:

 function addBuyOption(arr) { for (let i = 0; i < arr.length; i++) { arr[i].name="new name" //updating the existing key value arr[i].canBuy=true //new key value } return arr; } const arr = [ {name: "old name 1"}, {name: "old name 2"}, {name: "old name 3"}, ].map(Object.preventExtensions); console.log("Before:"); console.log(JSON.stringify(arr, null, 4)); addBuyOption(arr); console.log("After:"); console.log(JSON.stringify(arr, null, 4));
 .as-console-wrapper { max-height: 100% !important; }

(Tenga en cuenta que eliminé la promesa, no hace nada útil en este código).

Si eso es lo que está pasando, no puede agregar propiedades a los objetos. Pero puede crear una nueva matriz con copias de los objetos con la nueva propiedad:

 function addBuyOption(arr) { return arr.map(obj => ({ ...obj, // Copy existing properties name: "new name", // Set new value for existing property canBuy: true, // Set new property })); } const arr = [ {id: 1, name: "old name 1"}, {id: 2, name: "old name 2"}, {id: 3, name: "old name 3"}, ].map(Object.preventExtensions); console.log("Before:"); console.log(JSON.stringify(arr, null, 4)); const newArr = addBuyOption(arr); console.log("After:"); console.log(JSON.stringify(newArr, null, 4));
 .as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!