首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带条件的Javascript For循环

带条件的Javascript For循环
EN

Stack Overflow用户
提问于 2018-10-14 04:34:56
回答 1查看 55关注 0票数 0

我希望使用for循环来完成以下任务。

我将在数组中定义一组值,一组十六进制值作为图表的默认颜色。我想使用具有2个选项的循环来获取定义数量的这些值。

  1. 如果定义的颜色集中的值的数量小于请求的值的数量,则一旦达到最后一个值,它就会从1开始并继续循环。
  2. 不太重要,但可能有帮助的是,通过获取默认值集中任何索引处的值,并使用与#1相同的条件,因为如果它到达颜色数组中的最后一个值,它将循环回到开始处并继续进行。

下面是我的代码的开始,以及一些小的值来显示我正在寻找的东西。

代码语言:javascript
复制
var defaultColors = ["#90CAF9","#B39DDB","#7E57C2","#78909C","#AED581"] ;
var chartData = [12,24,30,40,15,23,35] ;

var dynamicColors = function (a) {
    var colors = [];
    for(i=0;i<a;i++){
        colors.push(defaultColors[i]);
    }
    return colors;
}

以及对颜色的呼唤

代码语言:javascript
复制
backgroundColor: dynamicColors(chartData.length),

在上面的例子中,有比颜色值更多的数据点,需要循环回到颜色数组的开头。

#1的预期输出只是从数组的开头循环。

代码语言:javascript
复制
["#90CAF9","#B39DDB","#7E57C2","#78909C","#AED581","#90CAF9","#B39DDB"]

#2的预期输出-指定起始索引。

代码语言:javascript
复制
["#7E57C2","#78909C","#AED581","#90CAF9","#B39DDB","#7E57C2","#78909C"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-14 04:45:55

您可以使用带有列表长度的modulo (aka remainder)运算符%来循环继续循环列表:

代码语言:javascript
复制
var defaultColors = ["#90CAF9", "#B39DDB", "#7E57C2", "#78909C", "#AED581"];
var chartData = [12, 24, 30, 40, 15, 23, 35];

var dynamicColors = function(a) {
  var colors = [];
  for (i = 0; i < a; i++) {
    colors.push(defaultColors[i % defaultColors.length]);
  }
  return colors;
}

console.log(dynamicColors(10))

要从不同的位置开始,只需将其添加到i并再次使用mod运算符:

代码语言:javascript
复制
var defaultColors = ["#90CAF9", "#B39DDB", "#7E57C2", "#78909C", "#AED581"];
var chartData = [12, 24, 30, 40, 15, 23, 35];

var dynamicColors = function(a, start) {
  var colors = [];
  for (i = 0; i < a; i++) {
    colors.push(defaultColors[(i + start) % defaultColors.length]);
  }
  return colors;
}

console.log(dynamicColors(7, 3)) // seven values starting at index 3

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52797080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档