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

175
Visualizações
¿Cómo puedo reordenar un ELEMENTO dentro de un OBJETO de una matriz de OBJETOS NO ordenados?

Cada búsqueda de cómo reordenar (NO CLASIFICAR) un elemento dentro de un objeto de una matriz de objetos sigue devolviendo cómo CLASIFICAR una matriz. Eso no es lo que quiero.

Aquí hay un ejemplo de abandono y suciedad:

 let obj = [ { name: "hi number 1a", id: "hi number 2a", address: "hi number 3a" }, { name: "hi number 1b", id: "hi number 2b", address: "hi number 3b" }, { name: "hi number 1c", id: "hi number 2c", address: "hi number 3c" }, { name: "hi number 1d", id: "hi number 2d", address: "hi number 3d" } ]

Lo que quiero hacer es RECORRER todos los objetos y REORDENARLOS para que la identificación esté AHORA en la posición del nombre para todos ellos, así:

 let obj = [ { id: "hi number 2a", name: "hi number 1a", address: "hi number 3a" }, { id: "hi number 2b", name: "hi number 1b", address: "hi number 3b" }, { id: "hi number 2c", name: "hi number 1c", address: "hi number 3c" }, { id: "hi number 2d", name: "hi number 1d", address: "hi number 3d" } ]

Aquí está el código que he probado:

 $scope.arraymove = (arr, fromindex, toindex) => { let len = arr.length; let newArr = []; let resultArr = []; for (let i = 0; i < len; i++) { resultArr[i] = move(arr[i], fromindex, toindex); newArr.push(resultArr[i]); } function move(thearr, old_index, new_index) { while (old_index < 0) { old_index += len; } while (new_index < 0) { new_index += len; } if (new_index >= len) { var k = new_index - len; while ((k--) + 1) { thearr.push(undefined); } } thearr.splice(new_index, 0, thearr.splice(old_index, 1)[0]); // CODE DIES HERE console.log("NEW ARRAY: ", thearr); return thearr; } console.log("New Reordered ARRAY: ", newArr); return newArr; }

Lo que sucede es que el arr ENTRANTE pierde ALCANCE y cuando golpea el empalme, obtengo SPLICE es una función.

Sí, estoy trabajando para una empresa de telecomunicaciones GRANDE TODAVÍA usando AngularJS. De todos modos, es simplemente javascript puro en este punto.

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

0

Aquí tienes, aunque ten en cuenta que no se puede garantizar el orden de los campos de objetos.

 let obj = [ { name: "hi number 1a", id: "hi number 2a", address: "hi number 3a" }, { name: "hi number 1b", id: "hi number 2b", address: "hi number 3b" }, { name: "hi number 1c", id: "hi number 2c", address: "hi number 3c" }, { name: "hi number 1d", id: "hi number 2d", address: "hi number 3d" } ] let newobj = obj.map( o => ({id: o.id, name: o.name, address: o.address})); console.log(newobj)

about 4 years ago · Juan Pablo Isaza Relatório

0

Las propiedades dentro de los objetos de JavaScript no tienen un orden explícito. Sin embargo, por lo general, se representan en el orden en que se agregan. "Reorganizar" las propiedades parece más una aventura de TOC que otra cosa. No hay una "posición 0".

Dicho esto, si estuviera en esta búsqueda de TOC, haría algo realmente simple:

 let obj = [ { name: "hi number 1a", id: "hi number 2a", address: "hi number 3a" }, { name: "hi number 1b", id: "hi number 2b", address: "hi number 3b" }, { name: "hi number 1c", id: "hi number 2c", address: "hi number 3c" }, { name: "hi number 1d", id: "hi number 2d", address: "hi number 3d" } ]; obj = obj.map(function(instance){ return { id: instance.id, name: instance.name, address: instance.address } });

Tenga en cuenta que esto reemplazará sus objetos con nuevos objetos que tengan el orden deseado. Si su aplicación tiene una referencia a cualquiera de los objetos antiguos, esto puede no ser deseable.

Si desea mantener intactas las referencias a los objetos, podría usar forEach() en su matriz, copiar las propiedades, eliminarlas y reasignarlas. Algo como esto:

 obj.forEach(function(instance){ let temp = { id: instance.id, name: instance.name, address: instance.address }; delete instance.id; delete instance.name; delete instance.address; instance.id = temp.id; instance.name = temp.name; instance.address = temp.address; });

Una vez más, sin embargo, todo esto parece innecesario. El único caso en el que puedo pensar en el que esto podría tener sentido es si necesita pasar sus datos a algún proceso que realmente se preocupe por el "orden" de las propiedades no ordinales (que parece roto y frágil).

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