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

だから私はこのオブジェクトを持っています、

最終的に次のようになるように再構築する必要があります。

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

positionX ASC で並べ替えます。

私が試してみました:

<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>

確かにソートは成功していますが、新しい「ソートされた」配列ではキーが正しくありません。

したがって、キーの元の読み取りに基づいて元のオブジェクトのすべての正しい値を取得することはできません。つまり、元のキーがソートされていないと、ソートされた「positionX」が何に属しているのかわかりません。タグ付けされた配列内の対応する位置 Y を取得できません。.sort(関数(){}); ソートされた配列に新しいキーを割り当てます。

4

1 に答える 1

3

あなたの質問を正しく理解できたら、positionX の値に従ってタグ付けされたものを並べ替えたいと思います。その場合は、属性を比較する関数を sort に渡すだけです。

var sorted=tagged.sort(function(a,b){return a.positionX-b.positionX});
于 2012-12-12T18:23:32.550 に答える