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

97
Visualizações
Enumeración de matrices divididas usando índices originales

Necesito dividir una matriz y enumerar los valores, pero también necesito la referencia al índice original porque estoy realizando una operación asíncrona que debe volver a asignarse al índice original en la matriz original cuando esté completa.

 const array = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']; const slicedArray = array.slice(0, 3).map((v, i) => ({ v, i })); // Returns: [{ "v": "foo", "i": 0 }, { "v": "bar", "i": 1 }, { "v": "baz", "i": 2 }] // Required: [{ "v": "foo", "i": 0 }, { "v": "bar", "i": 1 }, { "v": "baz", "i": 2 }] const slicedArray2 = array.slice(3, 6).map((v, i) => ({ v, i })); // Returns: [{ "v": "qux", "i": 0 }, { "v": "quux", "i": 1 }, { "v": "corge", "i": 2 }] // Required: [{ "v": "qux", "i": 3 }, { "v": "quux", "i": 4 }, { "v": "corge", "i": 5 }]

¿Cómo puedo conseguir esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Los elementos en el segmento siempre tienen índices que son exactamente startIndex menores que en la matriz original:

 slice(0, 3) -> [0, 1, 2] -> [0 - 0, 1 - 0, 2 - 0] slice(3, 6) -> [0, 1, 2] -> [3 - 3, 4 - 3, 5 - 3] slice(n, …) -> [0, 1, …] -> [n + 0 - n, n + 1 - n, n + 2 - n, …]

Entonces, simplemente agregar startIndex de nuevo debería hacer el truco:

 /** * @template Item * @param {Item[]} items * @param {number} startIndex * @param {number} [endIndex] * @returns {Array<{ item: Item; index: number }>} */ function slice(items, startIndex, endIndex = items.length) { return items.slice(startIndex, endIndex).map((item, index) => ({ item, index: index + startIndex, })); } 

 function slice(items, startIndex, endIndex = items.length) { return items.slice(startIndex, endIndex).map((item, index) => ({ item, index: index + startIndex, })); } const letters = [ ...'abcdefghijklmnopqrstuvwxyz' ]; console.log(slice(letters, 0, 3)); console.log(slice(letters, 3, 6)); console.log(slice(letters, 6, 9));

about 4 years ago · Juan Pablo Isaza Relatório

0

Usando array.map() ¡Puedes obtener todos los value e index la matriz! Después de este uso .slice()

Prueba este código, te ayudará.

 const array = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']; const slicedArray2 = array.map((v, i) => ({ v, i })).slice(3, 6); console.log(slicedArray2, 'slicedArray2');
about 4 years ago · Juan Pablo Isaza Relatório

0

De hecho, me gusta más la respuesta aceptada, pero para que conste, otra solución sin la slice

 const data = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']; const slice = (items, startIndex, endIndex = items.length) => { return items.reduce((acc, v, i) => { if (i >= startIndex && i < endIndex ) acc.push({ v, i }) return acc; }, []); } console.log(slice(data, 0, 3)); console.log(slice(data, 3));
 .as-console-wrapper{min-height: 100%!important; top: 0}

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