2016-07-19 3 views
0

여기 내 코드를 가져 와서 db 옵션을 사용하여 데이터베이스를 만듭니다. 알파벳순으로 표시하고 싶습니다. 나는 sort() 함수를 시도했지만 도움이되지는 않았다.json 개체를 특정 val에 정렬 하시겠습니까?

$(document).ready(function() { 

    //on change year change makes 
    $('#years').change(function() { 
    $('#makes').attr("disabled",true); 
    $('#makes').empty(); 
    $('#makes').append($("<option></option>") 
         .attr("value", 0) 
         .text("Select Makes")); 
    $.get('index.php?route=common/custom_search/get_makes_ajax&token=<?php echo $token; ?>', 
      function (json) { 
     if (json) { 
     $.each(json, function (key, val) { 
      $('#makes') 
      .append($("<option></option>") 
        .attr("value", key) 
        .text(val)); 
      console.log(json); 
     }); 
     $('#makes').removeAttr("disabled"); 
     //    console.log(json); 
     } else { 
     console.log('this is not working!'); 
     } 

    }); 
    $('#models').attr("disabled",true); 
    $('#sub_models').attr("disabled",true); 
    $('#engines').attr("disabled",true); 
    $('#parts').attr("disabled",true); 
    $('#search_button').attr("disabled",true); 
    }); 
} 
+0

나는 val.sort()를 시도했다; json, sort(); – dua

+0

json 코드는 입니다. public function get_makes_ajax() { $ json = $ this-> ajax_get_makes(); $ this-> response-> addHeader ('Content-Type : application/json'); $ this-> response-> setOutput (json_encode ($ json)); } – dua

+0

샘플 JSON을 제공해 주시겠습니까? 정렬 방법에 대한 일부 규칙/가이드 –

답변

1

내 생각 엔 당신이 유사한 개체를 정렬하는 데 노력하고 있다는 것입니다이 하나

var json = { 
     id1: 1998, 
     id2: 1975, 
     id3: 1983 
    }; 

당신이해야합니다, 그래서 당신은 객체에 정렬() 함수를 사용할 수 없습니다 데이터를 배열로 다시 코딩 할 수 있습니다. 보다 구체적으로 말하면, 객체의 배열이됩니다.

var arr = []; 

Object.keys(json).forEach(function(id) { 
    arr.push({ id: id, year: json[id] }); 
}); 

우리는 지금 (여기 연대순으로) arr를 정렬 할 수 있습니다

arr.sort(function(a, b) { return a.year - b.year; }); 

마지막으로, json 대신 arr를 사용하는 약간의 코드를 수정해야 할 것 :

$.each(arr, function (key, val) { 
    $('#makes') 
    .append($("<option></option>") 
      .attr("value", val.id) 
      .text(val.year)); 
}); 
+0

위대한 작품입니다. \t \t \t \t \t \t \t \t \t B = b.make; 제가 arr.sort (함수 (a, b) { \t \t \t \t \t \t \t \t \t a.make.toLowerCase A =()을 사용했다. 와 toLowerCase(); \t \t \t \t \t \t \t \t\t a b? 1 : 0; \t \t \t \t \t \t \t \t \t \t \t}); – dua

+0

당신은 왜 그것이 오류가 주어진 크롬과 함께 작동하지 않는지 알려주시겠습니까 잡히지 않은 TypeError : 개체.값은 함수가 아닙니다. 제발 나를 도와주세요 – dua

+0

@dua 더 이상'Object.values ​​()'를 사용하지 않는 업데이트 된 답변을 참조하십시오. (이것은 잘 알려진 방법이 아니라 [experimental] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/values)이며, 어쨌든 필요하지 않습니다. .) – Arnauld

관련 문제