jquery中的map()方法,如何按字母顺序排列
我正在尝试学习如何使用jQuery按字母顺序排列这个列表。我想我可以使用map()方法,但它似乎不起作用,因为单词在每行上都不分开 HTMLjquery中的map()方法,如何按字母顺序排列,jquery,Jquery,我正在尝试学习如何使用jQuery按字母顺序排列这个列表。我想我可以使用map()方法,但它似乎不起作用,因为单词在每行上都不分开 HTML 项目列表 A-Z 山丘 是 活的 与 JQUERY let array = []; $('#wordlist li').each(function(){ let print = $(this).html(); array.push(print); return array }); console.log(array
项目列表
A-Z
- 山丘
- 是
- 活的
- 与
JQUERY
let array = [];
$('#wordlist li').each(function(){
let print = $(this).html();
array.push(print);
return array
});
console.log(array);
$('button#alpha').on('click', function(){
array = array.sort();
let newArray = $.map( array, function(index, item){
return item + " " + index
});
$("#wordlist li").html("<li>" + newArray + "</li>")
});
console.log(array);
let数组=[];
$('#单词列表li')。每个(函数(){
let print=$(this.html();
数组。推送(打印);
返回数组
});
console.log(数组);
$('button#alpha')。在('click',function()上{
array=array.sort();
让newArray=$.map(数组,函数(索引,项){
返回项+“”+索引
});
$(“#单词列表li”).html(“”+newArray+“ ”)
});
console.log(数组);
您需要比较innerText
值而不是innerHTML
,如果要对数组排序,则应使用。每次尝试排序时,请记住清空全局数组
let数组=[];
函数getListContent(){
数组=[];
$('#单词列表li')。每个(函数(){
让print=$(this.text();
数组。推送(打印);
});
返回数组;
}
$('button#alpha')。在('click',function()上{
数组=getListContent();
array.sort(函数(a,b){
如果(a>b){
返回1;
}
如果(b>a){
返回-1;
}
返回0;
});
$(“#单词列表li”).html(“”);
让htmlValue='';
for(设i=0;i”+数组[i]+“”;
}
$(“#单词列表”).html(htmlValue)
});代码>
项目清单
A-Z
- 山丘
- 是
- 活的
- 与
无需创建阵列或创建替换元素
这要简单得多,因为可以在jQuery集合上使用sort(),因为它是一个类似数组的对象。在排序比较器函数中使用aText.localeCompare(bText)
排序后,只需将整个已排序集合附加到父列表。因为一个元素只能存在于一个地方,所以它将在集合中循环,并将每个元素附加到它的新位置
const$list=$(“#单词列表”)
$('button#alpha')。在('click',function()上{
const$items=$list.children().sort(函数(a,b){
返回$(a).text().localeCompare($(b).text())
});
$list.append($items)
});代码>
项目清单
A-Z
- 山丘
- 是
- 活的
- 与
最好完全跳过全局数组!还值得注意的是,您提供的排序函数是默认行为,因此,虽然它作为学习辅助工具很有用,但如果您要命名函数getSortedArray
,则该函数应该进行排序,这将有助于添加一条注释,说明它不是必需的。所以我建议重命名它,或者移动sort@FredStark,使用字符串时,最好创建自己的排序回调,因为有时它会给出意外的结果。在此处找到答案
let array = [];
$('#wordlist li').each(function(){
let print = $(this).html();
array.push(print);
return array
});
console.log(array);
$('button#alpha').on('click', function(){
array = array.sort();
let newArray = $.map( array, function(index, item){
return item + " " + index
});
$("#wordlist li").html("<li>" + newArray + "</li>")
});
console.log(array);