JavaScript将值拆分为数组
我正在创建一个评级系统,它将值舍入到最接近的0.5,并包含0到5之间的值 如何迭代数组,将值(四舍五入到最接近的0.5)拆分为单位JavaScript将值拆分为数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我正在创建一个评级系统,它将值舍入到最接近的0.5,并包含0到5之间的值 如何迭代数组,将值(四舍五入到最接近的0.5)拆分为单位 let评级=3.7 let adjustedRating=(数学四舍五入(评级*2)/2) e、 g.3.7:['1','1','1','1',0] 1.4将等于['1','0.5','0','0','0'] 让starsToShow=new Array().fill('0'); starsToShow.forEach((v,i)=>{ ... }); $('.c
let评级=3.7
let adjustedRating=(数学四舍五入(评级*2)/2)代码>
e、 g.3.7:['1','1','1','1',0]
1.4将等于['1','0.5','0','0','0']
让starsToShow=new Array().fill('0');
starsToShow.forEach((v,i)=>{
...
});
$('.calculate按钮')。单击(函数(){
var评级=$('.rating').val();
var数组=新数组();
而(评级>0){
无功额定电流;
如果(评级>1)
{
额定无功电流=1;
额定值-=额定电流;
array.push(额定电流);
}
否则{
无功电流额定值=(数学四舍五入(额定值*2)/2.toFixed(1);
评级=0;
array.push(parseFloat(currentRating));
}
}
while(数组长度<5)
{
array.push(0);
}
console.log(数组);
});代码>
计算
使用
let额定值=3.7
设adjustedRating=(数学四舍五入(评级*2)/2);
console.log(
Array.from({
//在此处设置数组长度
长度:5
},函数(,i){//遍历要更新的元素
//使用索引获取差异
var dif=调整后的额定值-i;
//根据差异分配数组值
返回dif>=1?'1':dif>0?.5':'0';
})
);代码>这可以按照您的意愿工作,但我更希望您接受AlienHoboken的建议。它干净多了
let rating = 3.7;
let adjustedRating = (Math.round(rating * 2) / 2);
let tempRating = adjustedRating;
let starsToShow = new Array(5).fill(0);
for(let i=0; i<5; i++) {
if (tempRating > 0.5) {
tempRating -= 1.0;
starsToShow[i] += 1.0;
} else {
starsToShow[i]+= 0.5;
break;
}
}
console.log(starsToShow);
let评级=3.7;
设adjustedRating=(数学四舍五入(评级*2)/2);
让温度=调整温度;
让starsToShow=新数组(5)。填充(0);
for(设i=0;i 0.5){
温度-=1.0;
starsToShow[i]+=1.0;
}否则{
starsToShow[i]+=0.5;
打破
}
}
console.log(starsToShow);
只是另一个条目,使用reduce和forEach。如果代码越少(1行?),from可能越好,但兼容性可能是一个问题
//使用forEach
函数getRating0(额定值){
var星=[0,0,0,0,0];
评分=数学四舍五入(评分*2)/2;
stars.forEach(函数(v,i){
星级[i]=评级>1?1:评级>0?评级:0;
--评级;
});
回归之星;
}
//使用reduce
功能等级(等级){
var星=[0,0,0,0,0];
评分=数学四舍五入(评分*2)/2;
返回星。减少(功能(acc、v、i){
星级[i]=评级>1?1:评级>0?评级:0;
--评级;
回归之星;
},星星);
}
console.log(getRating0(1.2));
console.log(getRating0(3.7));
console.log(getRating(1.2));
console.log(getRating(3.9))
为什么1.4会等于['1','0.5','0','0','0']
1.4应该等于这个值?我正在将评级四舍五入到最接近的半个值。@PranavCBalan它会返回为2,['1','1','0','0']@rickysullivan然后
应该是['1','1','1','1','0]
数组。来自。比我建议的代码少得多。很好,使用ES 2015:)var dif=(Math.round(rating*2)/2)-I代码>