Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript将值拆分为数组_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

JavaScript将值拆分为数组

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

我正在创建一个评级系统,它将值舍入到最接近的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)=>{
...
});

$('.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