理解简单的排序脚本,用于比较值

Understanding simple sorting script , that compares values

本文关键字:用于 比较 脚本 排序 简单      更新时间:2023-09-26

我正在寻找一个简单的jquery排序脚本,并在网上找到了这个:

$(function() {
    $('ol').each(function() {
        var matches = $('li', this).filter(function() { // Each item
            var text = $(this).text();
            return $('ul.three li').filter(function() { // Are there matches in .three?
                return $(this).text() == text;
            }).length > 0;
        }).length;
        $('li:last', this).text((matches * 10) + ' Points');
    });
});
这里的

小提琴

注意前两个表的值如何与第三个表的值进行比较。现在我的问题是关于matches是如何增加的,我经历了整个脚本,但不太理解匹配如何分别为第一个和第二个表获得4和2的值(在各自的表中显示为40和20)。我理解filter函数的用法,但不太理解匹配是如何得到它的值的,我知道length属性涉及到,我看到它在返回语句的末尾,但仍然不太理解匹配是如何增加的?

$(function() {
    $('ol').each(function() {
        var matches = $('li', this).filter(function() { // Each item

这里,它将迭代当前正在迭代的ol元素中包含的每个li

            var text = $(this).text();
            return $('ul.three li').filter(function() { // Are there matches in .three?
                return $(this).text() == text;
            }).length > 0;

在这里,它将在ul中搜索three类,如果有任何li与正在迭代的li具有相同的文本。filter函数将返回与搜索匹配的每个元素,当然,如果所有文本都不同,它将返回一个元素或不返回。因此,当它检查length > 0时,它所做的是检查是否至少有一个元素匹配(即:如果这个文本在.three中)。如果它返回true,它就会对前一个过滤器进行计数。

        }).length;

在这里,和以前一样,但是用了外部过滤器,来检查找到了多少。因此,对于第一个,值为4。

        $('li:last', this).text((matches * 10) + ' Points');
    });
});