gpt4 book ai didi

javascript - 如何在 JavaScript 中对包含字母和数字的字符串的数组进行排序

转载 作者:行者123 更新时间:2023-11-28 05:45:50 24 4
gpt4 key购买 nike

我正在开发一个网络应用程序,它可以为您提供一个选择职业的测试,它会提出 90 个问题,根据您的回答,它会显示前 3 个选项的列表,说明哪些职业更适合您。

过程:

var vars = [ calc, cFis, CBio]; //array of variables with numeric values of test results.
var keys = object.keys(vars);
var newArray = [];
var names = ['Cálculo', 'Cientifico - Físico', ect]; //array of the names of the professional abilities

//first sorting the array
keys.sort(function(a,b) {
return vars[b] - vars[a];
});
//create newArray whit the results
keys.forEach(function(key) {
newArray.push(names[key] + ' : ' + vars[key]);
});
//print results
document.getElementById('primero').innerHTML = newArray[0];
document.getElementById('segundo').innerHTML = newArray[1];
document.getElementById('tercero').innerHTML = newArray[3];

它将显示:

Cálculo : 60
Cientifico - Físico : 45
ect.

问题

必须使用预定义值表将 vars[key] 近似为百分比,如下所示:

Cálculo test points are between  60 - 65 then % must be 80%

现在要打印的字符串必须类似于:Cálculo : 80% 现在,假设我有 3 个职业和 3 个不同的 % 值,Cálculo : 80%, C - Fisico : 60%, art : 30% 我必须按其 % 值的顺序显示,例如:

Cálculo : 80% C - Físico : 60% Art : 30%

有没有办法获取字符串上的数字字符以按数字顺序对数组进行排序?就像上面的例子吗?

我正在尝试一种称为“自然排序”的方法,但它总是使用字母值在数字值之前对数组进行排序。喜欢:

Art : 30% Cálculo : 80% C - Físico 60%

最佳答案

您可以做的一件事是将字符串转换为数字(删除末尾的 %),然后按降序对数组进行排序:

var arr = ["Art : 30%", "Cálculo : 80%", "C - Físico: 60%"];
arr.sort(function(a, b){
// Substring between ": <substring here>%".
a = +a.substring(a.indexOf(":")+1, a.length - 1);
b = +b.substring(b.indexOf(":")+1, b.length - 1);
return b - a; // decending order
});
console.log(arr);

对于诸如 "Art : 30%" 之类的项目,您需要在 ":"+1 的索引处开始子字符串。

<小时/>

执行此操作的另一种方法是使用正则表达式,使用 .match(/\d+/g) 匹配字符串中的数字,以返回仅包含数字的字符串。

var arr = ["Art : 30%", "Cálculo : 80%", "C - Físico: 60%"];
arr.sort(function(a, b) {
a = +a.match(/\d+/g);
b = +b.match(/\d+/g);
return b - a;
});
console.log(arr);

使用第二种方法时要小心,如果使用百分比以外的数字,则该方法将不起作用。例如,如果一个是“Art1:30%”,则第二种方法将不起作用。解决这个问题的一种方法是使用 /\d+%/g ,然后删除末尾的 %

关于javascript - 如何在 JavaScript 中对包含字母和数字的字符串的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537183/

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