Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

137
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda