JavaScript将值拆分为数组

时间:2016-07-26 05:06:16

标签: javascript arrays ecmascript-6

我正在创建一个评级系统,它将值舍入到最接近的0.5并包含0到5之间的值。

如何迭代数组,将值(舍入到最接近的0.5)拆分为单位。

let rating = 3.7

let adjustedRating = (Math.round(rating * 2) / 2);

e.g。 3.7:['1','1','1','1',0]

1.4等于['1', '0.5', '0', '0', '0']

let starsToShow = new Array().fill('0'); starsToShow.forEach((v, i) => { ... });

4 个答案:

答案 0 :(得分:2)

使用 Array.from

进行操作

let rating = 3.7
let adjustedRating = (Math.round(rating * 2) / 2);

console.log(
  Array.from({
    // set array length here
    length: 5
  }, function(_, i) { // iterate over element to update
    // get the difference with index
    var dif = adjustedRating - i;
    // based on the difference assign the array value
    return dif >= 1 ? '1' : dif > 0 ? '0.5' : '0';
  })
);

使用简单的for循环

var rating = 3.7,
  res = [],
  adjustedRating = (Math.round(rating * 2) / 2);

for (var i = 0; i < 5; i++) {
  var dif = adjustedRating - i;
  res.push(dif >= 1 ? '1' : dif > 0 ? '0.5' : '0');
}

console.log(res);

答案 1 :(得分:1)

使用 reduce forEach 只是另一个条目。如果代码较少(1行?),来自可能会更好,但兼容性可能是一个问题。

#mySelect

答案 2 :(得分:0)

&#13;
&#13;
$('.calculate-button').click(function(){
  var rating = $('.rating').val();
  var array = new Array();
  while (rating > 0){
    var currentRating;
    if(rating > 1)
    {
      var currentRating = 1;
      rating -= currentRating;
      array.push(currentRating);
    }
    else{
      var currentRating = (Math.round(rating * 2) / 2).toFixed(1);
      rating = 0;
      array.push(parseFloat(currentRating));
  }
}

   while (array.length < 5)
   {
     array.push(0);
   }

  console.log(array);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="rating"/>
<button class="calculate-button">Calculate</button>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

这可以按你的意愿工作,但我更愿意你接受AlienHoboken的建议。它更干净。

var lsItems = [{"id":"100033"},{"id":"100035"},{"id":"1000336"}];

var item = lsItems.find(i => i.id === "100035");
console.log(item)