重新排列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});