Javascript 将数字从数组更改为百分比
我想把数组中的数字改成百分比,但我不知道该怎么做Javascript 将数字从数组更改为百分比,javascript,Javascript,我想把数组中的数字改成百分比,但我不知道该怎么做 var nums = [84394, 78952, 65570, 58097, 55673, 41847, 24884, 16567, 9966, 1689]; 应该是: var results = [84, 78, 65, 58, 55, 41, 24, 16, 9, 1] 我的尝试: var nums=[84394、78952、65570、58097、55673、41847、24884、16567、9966、1689]; var结果=[
var nums = [84394, 78952, 65570, 58097, 55673, 41847, 24884, 16567, 9966, 1689];
应该是:
var results = [84, 78, 65, 58, 55, 41, 24, 16, 9, 1]
我的尝试:
var nums=[84394、78952、65570、58097、55673、41847、24884、16567、9966、1689];
var结果=[];
对于(变量i=0;i在和上读取
更好的方法(确定其自身的最大值):
var getNearestPowerOfTen = function (arr) {
var max = arr.reduce(function (p, c) {
// is the previous less than the current item?
// if so, then return the current item
// otherwise, return the previous item
return p < c ? c : p;
}, 0);
// to find the next highest power of 10,
// we should return 10 raised to the number of digits
// in the integer part of our number
return Math.pow(10, (max | 0).toString().length);
}
var convertToPercentages2 = function (arr) {
var max = getNearestPowerOfTen(arr);
return nums.map(function (d, i) {
return (100 * d / max) | 0;
// could be more efficient with just
// `(d / max) | 0`, if you divide `max` by 100 above
});
}
var getnearestpowerfactory=函数(arr){
var max=arr.reduce(函数(p,c){
//前一项是否小于当前项?
//如果是,则返回当前项目
//否则,返回上一项
返回p
更好的方法(因为我们正在做数学)
var getNearestPowerOfTen2=函数(arr){
var max=arr[0];
//for循环比'Array.prototype.reduce'快`
对于(变量i=1;i
这应该可以:
var nums = [84394, 78952, 65570, 58097, 55673, 41847, 24884, 16567, 9966, 1689];
var results = [];
for(var i = 0; i < nums.length; i++) {
var divideBy = 0;
if ( nums[i] < 10000 )
divideBy = 100;
else if ( nums[i] < 100000 )
divideBy = 1000;
else if ( nums[i] < 1000000 )
divideBy = 10000;
else if ( nums[i] < 10000000 )
divideBy = 100000;
else if ( nums[i] < 100000000 )
divideBy = 1000000;
var percentage = Math.floor(nums[i] / divideBy);
results.push( percentage.toFixed(2) );
}
console.log(results);
var nums=[84394、78952、65570、58097、55673、41847、24884、16567、9966、1689];
var结果=[];
对于(变量i=0;i
用于(变量i=0;i
从您的问题(期望的结果)来看,您的所有数字似乎都是3个精度浮点乘以1000
如果希望根据下一个sig数字对结果进行四舍五入:
var nums=[84394、78952、65570、58097、55673、41847、24884、16567、9966、1689];
函数取整百分比(n){
返回(n/1000)。固定(0);
}
var roundedResults=nums.map(roundedPercents);
document.write(roundedResults.join(“,”)
如果你选择1000而不是100,结果就会出来。这与你刚才在本网站上询问的结果类似。@Zeeshan就在这里,你需要选择1000。“数组到百分比”是什么样的,所有数组元素的和还是一个常量之外的值?这是一个非常糟糕的方法来决定除以什么。如果我的号码是Math.pow(10,9)
,那该怎么办?避免只回答代码。添加一些关于您的解决方案的描述。
var getNearestPowerOfTen2 = function (arr) {
var max = arr[0];
// for-loop is faster than `Array.prototype.reduce`
for (var i = 1; i < arr.length; i++) {
if (max < arr[i]) max = arr[i];
}
return Math.pow(10, Math.ceil(Math.log10(max)));
}
var nums = [84394, 78952, 65570, 58097, 55673, 41847, 24884, 16567, 9966, 1689];
var results = [];
for(var i = 0; i < nums.length; i++) {
var divideBy = 0;
if ( nums[i] < 10000 )
divideBy = 100;
else if ( nums[i] < 100000 )
divideBy = 1000;
else if ( nums[i] < 1000000 )
divideBy = 10000;
else if ( nums[i] < 10000000 )
divideBy = 100000;
else if ( nums[i] < 100000000 )
divideBy = 1000000;
var percentage = Math.floor(nums[i] / divideBy);
results.push( percentage.toFixed(2) );
}
console.log(results);
for(var i = 0; i < nums.length; i++) {
var percentage = parseInt((nums[i] + '').slice(0,2));
results.push( percentage );
}