Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
¿Mejorar la eficiencia de agregar una columna a una matriz en un bucle?

Así que escribí un código que va a la identificación de un libro basado en un "diccionario" y toma los datos de todas las hojas de ese libro después de la segunda hoja. Luego, esos datos se agregan en una sola matriz. Mi pregunta se centra en la idea de mejorar el ciclo for en la instrucción if. Eso es agregar el "nombre del proveedor" al frente del subarreglo que representa una fila en la hoja/datos. Me dijeron que esto es ineficiente ya que el código tiene que pasar por cada subarreglo y agregar un valor.

¿Hay una manera más eficiente de hacer esto? Lo hice de esta manera porque estoy copiando los valores de un rango que se almacenan como una matriz de matrices. Entonces, para agregar datos, tengo que volver a acceder a los subarreglos. ¿Es posible agregar los nuevos datos (nombre del proveedor) al mismo tiempo que se copian los valores? ¿Sería esto más eficiente? Se recomendó usar una función de flecha, sin embargo, no estoy familiarizado con su uso.

 function aggregate() { var combinedData = [] var idArray = { "suppliername":"id", }; for (var supplierName in idArray){ var sBook = SpreadsheetApp.openById(idArray[supplierName]); var sheets = sBook.getSheets(); for (var index = 2; index <sheets.length; index++){ var sheet = sheets[index]; var dataLength = sheet.getRange("E5:E").getValues().filter(String).length; if(dataLength != 0){ var dataRange = sheet.getRange(5,2,dataLength,14); var dataValues = dataRange.getValues(); for (row in dataValues) { dataValues[row].unshift(supplierName); }; combinedData = combinedData.concat(dataValues); }; }; }; var dataLength = combinedData.length; const dSheet = SpreadsheetApp.openById("id").getSheets()[0]; dSheet.getRange(2,1,dSheet.getMaxRows(),dSheet.getMaxColumns()).clearContent(); var dRange = dSheet.getRange(2,1,dataLength,15); dRange.setValues(combinedData); };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En su guión, ¿qué tal la siguiente modificación?

De:

 for (row in dataValues) { dataValues[row].unshift(supplierName); }; combinedData = combinedData.concat(dataValues);

A:

 combinedData = combinedData.concat(dataValues.map(e => [supplierName].concat(e)));

o

 combinedData = [...combinedData, ...dataValues.map(e => [supplierName, ...e])];

Referencias:

  • mapa()
  • Difundir sintaxis
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda