gpt4 book ai didi

javascript - 当数字是每个条目的第一部分时,如何在 Javascript 中对数组进行数字排序?

转载 作者:行者123 更新时间:2023-12-01 03:40:47 25 4
gpt4 key购买 nike

我正在从字符串创建单词列表。然后,我将该字符串拆分为单独的单词,收集每个单词重复的次数,然后显示它。 那里的一切都运转良好。但是,结果显示的单词和计数没有特定的顺序。我想首先显示它们的最大数字。我生成了以下代码:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to display the array values after the split.</p>

<button onclick="analyze()">Analyze</button>

<p id="displayText"></p>

<script>
function analyze() {
var str = "This this is is is is is is is is is is is is is is is just just a test test test";
var res = str.split(" ");
document.getElementById("displayText").innerHTML = res;
document.getElementById("displayText").innerHTML += "<br/><br/>The amount of words is: " + res.length + "<br/><br/><br/>";

document.getElementById("displayText").innerHTML += "The list of words:<br/><br/>";

var words = [];

var wordsWithCount = [];

for (i = 0; i < res.length; i++) {
words.push(res[i]);
document.getElementById("displayText").innerHTML += words[i] + "<br/><br/>";
}

var current = null;
var cnt = 0;
for (var i = 0; i < words.length; i++) {
if (words[i] != current) {
if (cnt > 0) {
document.getElementById("displayText").innerHTML += "<br/><br/>" + cnt + " - " + current + "<br/>";
wordsWithCount.push(cnt + " - " + current);
}
current = words[i];
cnt = 1;
} else {
cnt++;
}
}

if (cnt > 0) {
document.getElementById("displayText").innerHTML += "<br/><br/>" + cnt + " - " + current + "<br/>";
wordsWithCount.push(cnt + " - " + current);
}

wordsWithCount.sort();

document.getElementById("displayText").innerHTML += "<br/><br/><br/><br/><br/>The list of SORTED words:<br/><br/>";

for (i = 0; i < wordsWithCount.length; i++) {
document.getElementById("displayText").innerHTML += wordsWithCount[i] + "<br/><br/>";
}
}
</script>

</body>
</html>

这是输出的最后一位。正如您所看到的,它正在排序,但仅按第一位数字排序。因此,15 显示在 2 之前。有什么想法吗?

排序后的单词列表:

1 - 这个

1 - a

1 - 这个

15 - 是

2 - 只是

3 - 测试

我很可能需要在某个时候将其分成两个数组,因为我希望用户能够复制和粘贴所有单词,而不需要数字。但是,我认为这需要是最后一步,因为如果我将每个单词的频率分解为它自己的数字数组,并将单词保留在它们自己的数组中,那么排序函数将对一个数组进行排序,对另一个数组进行排序数组不会跟随。

最佳答案

使用 parseInt() 方法和此处找到的解决方案 ( How to sort an array of integers correctly ) 来混合它的工作原理!

wordsWithCount.sort(); 替换为:

function sortNumber(a,b) {
return parseInt(a) - parseInt(b);
}

wordsWithCount.sort(sortNumber);

住在这里: https://www.w3schools.com/code/tryit.asp?filename=FFGXRIN0VZWO

关于javascript - 当数字是每个条目的第一部分时,如何在 Javascript 中对数组进行数字排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902218/

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