jquery - 如何在 jquery 'each' 循环中对 json 值进行分组和排序
问题描述
我正在尝试将美国代表和参议员的数据从下面的 json 中提取到下拉菜单中……最好按“Sen”和“Rep”分组,然后按字母顺序排列。到目前为止,下面的代码正在努力让所有成员进入下拉列表,但没有分组或按字母顺序排列。希望有任何想法,谢谢!
<script>
$.ajax({
url:'https://theunitedstates.io/congress-legislators/legislators-
current.json',
dataType: 'json',
type:'get',
cache:false,
success:function(data) {
$(data).each(function(index, value) {
$("#members").append("<option>" + value.terms[value.terms.length-
1].type + " " + value.name.first + " " + value.name.last + "</option>");
});
}
});
</script>
<form>
<select id="members" style="text-transform:uppercase;">
<option selected="selected">Select...</option>
</select>
</form>
解决方案
HTML
<optgroup>
元素在一个元素中创建一组选项<select>
。
( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup )
<select id="members" style="text-transform:uppercase;">
<optgroup id="senators" label="Senators"></optgroup>
<optgroup id="reps" label="US Reps"></optgroup>
</select>
该
sort()
方法对数组的元素进行就地排序并返回该数组。
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
所以,如果你想按姓氏排序,你可以试试这个:
var reps = [];
var senators = [];
$.ajax({
url: 'https://theunitedstates.io/congress-legislators/legislators-current.json',
dataType: 'json',
type: 'get',
cache: false,
success: function (data) {
$(data).each(function (index, value) {
if (value.terms[value.terms.length - 1].type == 'sen') {
// add to senators
senators.push(value.name.last + ', ' + value.name.first);
} else {
// add to reps
reps.push(value.name.last + ', ' + value.name.first)
}
});
senators.sort();
reps.sort();
senators.forEach(function (val) {
$("#senators").append("<option>" + "SEN. " + " " + val + "</option>");
});
reps.forEach(function (val) {
$("#reps").append("<option>" + "REP. " + val + "</option>");
})
}
});
JSFiddle:( https://jsfiddle.net/eb1ayera/)
推荐阅读
- flutter - 是否可以将最新版本的依赖项添加到 pubspec.yaml 而不自己找到它?
- reactjs - 我可以强制水合物向元素添加属性吗?
- mysql - 仅当结果值不同时才选择最大值
- vb.net - 在 Intellisense 中显示事件处理程序
- svelte - 如何在 Svelte 中基于整数多次渲染组件?
- r - 在 Ubuntu 20.04 上安装 r-cran-rgdal
- javascript - 打开弹出窗口时,Chrome 上下文菜单项会增加
- reactjs - 当我使用它进行身份验证时,Redux 中的状态未定义
- python - 将字符串转换为变量类型python
- django - manage.py makemessages 不适用于项目的 urls.py 文件