gpt4 book ai didi

Javascript 对索引链接数组进行排序

转载 作者:行者123 更新时间:2023-11-28 06:03:49 25 4
gpt4 key购买 nike

很抱歉,如果已经有人问过这个问题,但我确实搜索了“javascript排序索引链接数组”,但没有找到令人满意的结果。

我有一个名称数组和另一个索引链接数组,它记录名称在段落中出现的频率,我想不按字母顺序而是根据名称频率对这两个数组进行排序 - 例如,最频繁的排序到最不频繁。我有以下代码可以充分完成这项工作,但我认为它看起来像是一个黑客。当然,有一种更优雅的方法来解决这个非常常见的排序问题。

我从一系列名字开始[],比如 6 Johns、2 Annes、9 Toms、12 Andrews、3 Kristens、1 Archie 和 14 Peters - 已经按字母顺序排序并计入频率,下面的例程结果为名称和频率数组的索引数组,使我能够按从最高到最低的顺序显示名称和频率。

var names = ["Andrew", "Anne", "Archie", "John", "Kristen", "Peter", "Tom"];
var frequency = [12, 2, 1, 6, 3, 14, 9];
var holder = [], secondpart = [], numindex = [];
var i;
for (i = 0; i < frequency.length; i++) {
if (frequency[i] < 10) {
holder[i] = "0" + frequency[i] + "!" + i; // add leading zeros as required
}
if (frequency[i] > 9) {
holder[i] = frequency[i] + "!" + i; // no leading zeros required
}
}
holder.sort();
holder.reverse();
for (i = 0; i < holder.length; i++) {
secondpart[i] = holder[i].substring(holder[i].indexOf("!") + 1, holder[i].length);
numindex[i] = parseInt(secondpart[i]);
}

我现在可以根据名称频率列出两个数组。

var txt = "";
var useindex;
for (i = 0; i < numindex.length; i++) {
useindex = numindex[i];
txt = txt + names[useindex] + " - " + frequency[useindex] + "<br>";
}

其他人是否也遇到过这个问题,您是如何解决的。

最佳答案

试试这个:

var names = ["Adam", "Peter", "Mahu", "Lala"];
var frequencies = [6,2,9,1];

var tupples=[];
for(let i = 0; i<names.length; i++)
{
tupples[i] = {
frequency : frequencies[i],
name : names[i]
};
}

//ascending
//tupples.sort(function(a,b){return a.frequency-b.frequency;});

//descending
tupples.sort(function(a,b){return b.frequency-a.frequency;});

for(let i=0; i<tupples.length; i++)
{
console.debug(tupples[i].name, tupples[i].frequency);
}

关于Javascript 对索引链接数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063224/

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