这是我根据选项中的年份从数据库获取品牌的代码,现在我想按字母顺序显示品牌。我已经尝试过 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/