gpt4 book ai didi

javascript - 使用 backbone.js 以相反的顺序对字符串进行排序

转载 作者:IT王子 更新时间:2023-10-29 03:08:24 25 4
gpt4 key购买 nike

我正在尝试以相反的顺序对 Backbone.js 集合进行排序。之前有关于如何使用整数执行此操作的回复,但没有关于字符串的回复。

var Chapter  = Backbone.Model;
var chapters = new Backbone.Collection;

chapters.comparator = function(chapter) {
return chapter.get("title");
};

chapters.add(new Chapter({page: 9, title: "The End"}));
chapters.add(new Chapter({page: 5, title: "The Middle"}));
chapters.add(new Chapter({page: 1, title: "The Beginning"}));

alert(chapters.pluck('title'));

上面的代码将章节从 A -> Z 排序,但是我如何编写一个比较器来将它从 Z -> A 排序?

最佳答案

你可以:

  • 抓取字符串中每个字符的字符代码,
  • 0xffff中减去每个值(string.charCodeAt的最大返回值),
  • 使用 String.fromCharCode 将其变回“否定”字符的字符串

这将是您的排序键。

chapters.comparator = function(chapter) {
return String.fromCharCode.apply(String,
_.map(chapter.get("title").split(""), function (c) {
return 0xffff - c.charCodeAt();
})
);
}

瞧:

> console.log(chapters.pluck('title'));
["The Middle", "The End", "The Beginning"]

注意:如果您的比较字符串很长(如 65 kb 或更多),您可能会遇到麻烦(请参阅下面 Matt 的评论)。为避免这种情况并加快比较速度,只需使用较短的比较字符串片段即可。 (在上面的示例中,您可以改为使用 chapter.get("title").slice(0, 100).split("")。)您需要的切片长度取决于你的申请。

关于javascript - 使用 backbone.js 以相反的顺序对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com