• 0
Sign in to follow this  
sk8sta13

Ordenar uma lista

Question

Bom dia pessoal,

tenho a seguinte lista:

var x = {0: "C", 1: "A", 2: "T"}

Quero ordenar para:

var x = {1: "A", 0: "C", 2: "T"}

Já tentei de algumas formas, mas sem sucesso...

Essa lista vem de um json, quando o json sai do php já ta ordenado, mas quando chega no js fica como no primeiro exemplo.

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Infelizmente não é possível fazer essa operação mantendo os índices numéricos, pois eles serão alterados internamente para melhor otimização do JS.

Contudo se apenas a ordenação for importante, você pode fazer o seguinte:

var x = { "1": "A","0": "C", "2": "T"}

function order(obj){
   var retorno = [];

   for(var i in obj){
     retorno.push(obj[i]);
   }

   return retorno.sort();
}

console.log(order (x));
Edited by Unn

Share this post


Link to post
Share on other sites
  • 0

Consegui resolver mantendo a relação "chave valor" assim:

Object.sortByKeys = function(myObj){
    var keys = Object.keys(myObj)
    keys.sort()
    var sortedObject = Object()
    for(i in keys){
        key = keys[i]
        sortedObject[key]=myObj[key]
    }
    return sortedObject
};

Object.invert = function (obj) {
    var new_obj = {};
    for (var prop in obj) {
        if(obj.hasOwnProperty(prop)) {
            new_obj[obj[prop]] = prop;
        }
    }
    return new_obj;
};

var x = {0: "C", 1: "A", 2: "T"}

x = Object.sortByKeys(Object.invert(x));
console.log(x); 

//Object{A: "1", C: "0", T: "2"}
Edited by sk8sta13

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this