【发布时间】:2016-11-26 23:47:21
【问题描述】:
我正在开发一个 Web 应用程序,该应用程序可让您成为选择专业职业的测试,它会提出 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% now,假设我有 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%
【问题讨论】:
-
您不需要在阵列上使用
Object.keys。在您的forEach函数中,第二个参数可以是索引。你可以做names.forEach(function(name, i) { newArray.push(name + ' : ' + vars[i]); }); -
我不明白
calc、cFis和CBio实际包含的内容。请解释Cálculo test points are between 60 - 65 then % must be 80%背后的逻辑,您的代码中没有与此相对应的内容
标签: javascript arrays string sorting alphanumeric