Javascript “我不明白”;排序功能“;

Javascript “我不明白”;排序功能“;,javascript,function,Javascript,Function,这个问题对你来说可能很容易。。但我是javascript新手 我无法理解这部分的功能 kids.sort(函数(n,m) 什么是n和m???以及我如何理解这种函数 thsnks <script> function sortkids(e) { if (typeof e == "string") e = document.getElementById(e); var kids = []; for(var x = e.firstChild; x != null

这个问题对你来说可能很容易。。但我是javascript新手

我无法理解这部分的功能

kids.sort(函数(n,m)

什么是n和m???以及我如何理解这种函数

thsnks

<script>
function sortkids(e) {
     if (typeof e == "string") e = document.getElementById(e);
     var kids = [];
     for(var x = e.firstChild; x != null; x = x.nextSibling)
         if (x.nodeType == 1) kids.push(x);
     kids.sort(function(n, m) { 
                   var s = n.firstChild.data; 
                   var t = m.firstChild.data;
                   if (s < t) return -1;    
                   else if (s > t) return 1;  
                   else return 0;           
               });

     for(var i = 0; i < kids.length; i++) e.appendChild(kids[i]);
}
</script>
<ul id="list"> 
<li>one<li>two<li>three<li>four <!-- items are not in alphabetical order -->
</ul>
<button onclick="sortkids('list')">Sort list</button>

函数排序(e){
if(typeof e==“string”)e=document.getElementById(e);
var=[];
for(变量x=e.firstChild;x!=null;x=x.nextSibling)
如果(x.nodeType==1)kids.push(x);
kids.sort(函数(n,m){
var s=n.firstChild.data;
var t=m.firstChild.data;
如果(st),则返回1;
否则返回0;
});
对于(var i=0;i
  • 一个
  • 两个
  • 三个
  • 四个 排序表
  • n
    m
    将是数组中的元素。该函数将被重复调用,使用不同的数组元素进行比较,并期望返回一个值,说明
    n
    是否小于、大于或等于
    m
    。这使得
    排序
    可以完成对数组进行排序的工作,即使您gh
    sort
    不知道元素的任何信息。它需要知道的是,它从您传入的函数中获得


    该代码所做的是将DOM元素放入数组中,然后对其进行排序,这只会对数组中的元素进行排序,而不会对DOM中的元素进行排序。因此,最后一位执行
    e.appendChild
    调用时,会取下已排序的数组并移动DOM中的元素,以便它们位于正确的位置。(这是因为当您使用已在DOM其他位置中的元素调用
    appendChild
    时,它会被移动;
    appendChild
    总是在末尾追加。)
    n
    m
    将是数组中的元素。该函数将被重复调用,使用不同的数组元素进行比较,并返回一个值,说明
    n
    是否小于、大于或等于
    m
    。这使得
    排序
    可以完成对数组排序的工作,即使
    sort
    不知道元素的任何信息。它需要知道的只是从您传入的函数中获取的信息


    该代码所做的是将DOM元素放入数组中,然后对其进行排序,这只会对数组中的元素进行排序,而不会对DOM中的元素进行排序。因此,最后一位执行
    e.appendChild
    调用时,会取下已排序的数组并移动DOM中的元素,以便它们位于正确的位置。(这是因为当您使用已在DOM其他位置中的元素调用
    appendChild
    时,它会被移动;
    appendChild
    总是在末尾追加。)排序< <代码> >正在对您进行实际排序,即数组内的项目的洗牌。您需要告诉<代码>。排序< /代码>是您希望项目排序的方式。通过提供一个函数,该函数采用两个参数并返回为您认为“更大”或“更小”的两个参数的信息。或者两者是否相等(返回值分别为
    -1
    0
    1


    .sort
    遍历数组,一次将两个元素传递到函数中,询问“哪个元素更大?”,根据答案对数组进行排序。它会重复执行此操作,直到对数组进行排序。

    。sort
    是为您进行实际排序,即数组中的项目四处移动。您需要告诉
    .sort
    的是您希望对项目进行排序的方式。您可以通过提供一个包含两个参数的函数并返回NS作为两个您认为“更大”或“更小”的信息,或者两者是否相等(返回值<代码> - 1 < /代码>,<代码> 0 < /代码>和<代码> 1 < /代码>)。
    .sort
    遍历数组,一次将两个元素传递到函数中,询问“哪个元素更大?”,根据答案对数组进行排序。它会重复执行此操作,直到数组排序为止。

    将“比较”函数传递给“排序”,该函数使用比较函数比较任意两个项目(以查看哪个项目先到)。这是JavaScript中的一个非常基本的模式——你需要一本关于JavaScript的好书并通读一遍。不要以为如果你懂另一种编程语言,你可以通过反复试验来学习JavaScript。@Stephen Chung谢谢我的“JavaScript好部分”,但对初学者来说很难。好吧,试试类似的方法“面向初学者的JavaScript”…@Stephen感谢您将“比较”函数传递给“排序”,该函数使用比较函数来比较任意两个项目(以查看哪一个先到)。这是JavaScript的一个非常基本的模式——你需要一本关于JavaScript的好书并通读一遍。不要以为如果你懂另一种编程语言,你可以通过反复试验来学习JavaScript。@Stephen Chung谢谢我有“JavaScript好的部分”,但对初学者来说很难。好吧,试试类似这样的东西面向初学者的JavaScript"…@Stephen谢谢你的书谢谢你的人给我一本书或一篇文章functions@tarek从来没有真正读过一本,所以不能给出建议。但是任何Javascript书籍都应该讨论函数;如果没有,那就不是一本关于Javascript的书。或者是关于编程的书。:Phahaha你是对的。但我不理解某些情况下的参数,比如就像这个例子一样谢谢你,给我一本书或一篇文章functions@tarek从来没有真正读过一本,所以不能给出建议。但是任何Javascript书籍都应该讨论函数;如果没有,那就不是一本关于Javascript的书。或者是关于编程的书。:Phahaha你是对的。但是我不理解某些情况下的参数,比如这次考试ple