gpt4 book ai didi

javascript - 使用 javascript 按组成的字母表手动对段落进行排序

转载 作者:行者123 更新时间:2023-11-28 05:04:35 26 4
gpt4 key购买 nike

我正在尝试按字母顺序对段落进行排序,不是按照正常的 ABC,而是按照虚构的顺序(var 顺序)。

我编写了这个函数,它效果很好,但仅限于每个单词的第一个字母 - 也不能进行词内排序(例如,在正确的 ABC 中,“banana”会出现在“birthday”之前)。

我不知道该去哪里。

$("#send").click(function () {
var text = $("#text").val().replace(/[^A-Za-z0-9_\s]/g, "").toUpperCase().split(" ");
var order = ["Q", "B", "K", "D", "H", "V", "Z", "E", "F", "O", "G", "L", "M", "S", "N", "P", "I", "X", "A", "R", "W", "U", "C", "J", "T", "Y"];
var i, t, j;
var newText = []; // will hold the new alphabet
// function to sort the words:
for (i = 0; i < order.length; i++) {
for (t = 0; t < text.length; t++) {
var firstChar = text[t][0];
if (order[i] == firstChar) {
newText.push(text[t]);
}
}
}
console.log(newText.join(','));
});

编辑:示例输入可以是:“嗨,但你不认为这很棒吗”,我希望输出为:“don’t dan hi is Awesome this think that you”。

最佳答案

您可以使用带有字母索引的对象并使用 Array#sort使用回调查找每个字母并计算顺序。

function foo(text) {
var text = text.replace(/[^A-Za-z0-9_\s]/g, "").toUpperCase().split(" "),
order = "QBKDHVZEFOGLMSNPIXARWUCJTY",
ref = {};

order.split('').forEach(function (a, i) { ref[a] = i + 1; });
text.sort(function (a, b) {
var i = 0, v;
do {
v = (ref[a[i]] || 0) - (ref[b[i]] || 0);
i++;
} while (!v)
return v;
});
console.log(text.join(', '));
}

foo('a aa ab b ba bb');
foo('banana birthday');

关于javascript - 使用 javascript 按组成的字母表手动对段落进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854465/

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