重新排列javascript对象-使用.sort()的键不会保留在正在排序的数组中

重新排列javascript对象-使用.sort()的键不会保留在正在排序的数组中,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,所以我有这个物体 我需要重建它,使其最终看起来如下所示: var tagged={"tagged":[ {"positionX":11,"positionY":13}, {"positionX":12,"positionY":18}, {"positionX":10,"positionY":20} ]}; 按位置X ASC排序 我试过: var tagged={"tagged":[ {"positionX":10,"positionY":20}, {"positionX":11,"positi

所以我有这个物体

我需要重建它,使其最终看起来如下所示:

var tagged={"tagged":[
{"positionX":11,"positionY":13},
{"positionX":12,"positionY":18},
{"positionX":10,"positionY":20}
]};
按位置X ASC排序

我试过:

var tagged={"tagged":[
{"positionX":10,"positionY":20},
{"positionX":11,"positionY":13},
{"positionX":12,"positionY":18}
]};

var taged={“taged”:[
{“位置X”:11,“位置Y”:13},
{“位置X”:12,“位置Y”:18},
{“位置X”:10,“位置Y”:20}
]};
taged=taged.taged;
var newtaged=新数组();
对于(变量i=0;i
确实有一个成功的排序,但是新的“排序”数组中的键不正确


因此,我无法根据键的原始读取检索原始对象中的所有正确值,我的意思是,如果没有排序的原始键,我不知道排序后的“positionX”属于什么,这样我就无法检索其在数组中的对应位置。排序(函数(){});将新键分配给排序数组。

如果我正确理解您的问题,您希望根据positionX的值对标记的进行排序。如果是这种情况,您只需将一个函数传递给比较属性的sort

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
        var tagged={"tagged":[
        {"positionX":11,"positionY":13},
        {"positionX":12,"positionY":18},
        {"positionX":10,"positionY":20}
        ]};

        tagged=tagged.tagged;

        var newtagged=new Array();
        for (var i = 0; i < tagged.length; i++) {
        newtagged[i]=tagged[i].positionX;   
        }

        var sorted=newtagged.sort(function(a,b){return a-b});

        $(sorted).each(function(k,v){   
        alert(v);
        });
</script>

排序实际上是在tagged.tagged数组上。@Christophe所以我最初认为(如果你看到历史记录,这是我答案的早期版本:),但后来我注意到
tagged=tagged.tagged
我认为tagged=tagged.tagged只是失败尝试的一部分。
sorted=tagged.tagged.slice().sort(函数(a,b){返回a.positionX-b.positionX});
var sorted=tagged.sort(function(a,b){return a.positionX-b.positionX});