0

私はこのように配列を持っています

{
    1="Металлургия и производство готовых металлических продуктов",
    2="Химическая промышленность",
    3="Альтернативная энергетика",
    4="Транспортная инфраструктура"
}

このような別の質問を見てきましたが、何も見つかりませんでした。

完全なコード:

$.getJSON('/project/'+ clicked +'s/', function(data) {

            var info =
                '<td></td>'
                +'<td>'
                    +'<select name="'+ clicked +'_id'+ id +'" id="edit_'+ clicked +'_id'+ id +'">'
                        +'<option value="">'+obj['list_'+lang]+'</option>';

                        for (var i in data) {
                                info += '<option value="'+ i +'">'+ data[i] +'</option>';
                        }
                    info += '</select>'
                +'</td>';

            $('#'+ clicked +'s'+ id).show().html(info);

        });

データには、上記の配列があります。次のようにアルファベット順に並べ替えます。

class Controller_Project extends Controller_Website {
public function action_sectors() {
    $sectors = ORM::factory('sector')
        ->find_all()
        ->as_array('id', 'name');

    $ar_sectors = array();
    switch ($this->user_language) {
        case 'ru':
            $ar_sectors[15] = 'Агропромышленный комплекс';
            $ar_sectors[3] = 'Альтернативная энергетика';
            $ar_sectors[7] = 'АПК и текстильная промышленность';
            $ar_sectors[13] = 'Атомная промышленность и атомная энергетика';
            break;
        case 'en':
            $ar_sectors[15] = 'Agricultural Sector';
            $ar_sectors[3] = 'Alternative Energy Industry';
            $ar_sectors[7] = 'Agriculture and textiles';
            $ar_sectors[13] = 'Atomic Industry';
            break;
    }

    $sectors = $ar_sectors;
    $this->auto_render = FALSE;
    $this->request->response = json_encode($sectors);

}

}

コードがあるサイトhttp://new.baseinvest.kz/project

4

1 に答える 1

1

sortソート方法に応じて、JavaScript のネイティブ メソッドを使用し、独自の比較関数を渡すことができます: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

例: 各オブジェクトのプロパティでアルファベット順に並べ替えるには

var arr = [{say: "hi"}, {say: "bye"}];

arr.sort(function(a, b) {
   if (a.say > b.say) {
      return 1;
   }
   if (a.say < b.say) {
      return -1;
   }
   return 0;
});

// arr now equals [{say: "bye"}, {say: "hi"}];

作業例: http://jsfiddle.net/uKAEz/

編集:あなたの更新に応じて、オブジェクトの配列をソートしているのではなく、文字列の配列をソートしていることは明らかです。また、ロシア語のようです。以下はあなたが望むことをするはずです:

arr.sort(function(a, b) {
    return a.localeCompare(b, "ru");
});

Unicode 文字列の並べ替えを容易にする方法については、https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare を参照してください。localCompare

于 2013-08-14T10:23:33.253 に答える