javascript - 对特定 val 的 json 对象进行排序?

标签 javascript json

这是我根据选项中的年份从数据库获取品牌的代码,现在我想按字母顺序显示品牌。我已经尝试过 sort() 函数,但没有任何反应,请帮忙。

$(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);
  });
}

最佳答案

我的猜测是您正在尝试对与此类似的对象进行排序:

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

您不能对对象使用 sort() 函数,因此您必须将数据重新编码为数组。更具体地说,它将成为一个对象数组。

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; });

最后,您需要稍微修改代码以使用 arr 而不是 json:

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

关于javascript - 对特定 val 的 json 对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452351/

相关文章:

javascript - 显示多个父 div 的子 div

javascript - 如何禁用 .select2() javascript?

sql - JSONB ILIKE 索引

javascript - 从变量中删除前导数字 (jQuery Get)

java - 为什么 Json 测试程序不起作用?

javascript - 希望在 JavaScript 中使 input=date 接受 DD/MM/YYYY 格式

javascript - Parse.User.logIn 卡住了

javascript - 调度 KeyboardEvent 无法在文本区域中生成字符

json - 云信息错误: "Template validation error: Invalid template parameter property ' VPC'"

Swift4 的 JSON 解码器