Javascript For 循环(带条件)

标签 javascript arrays json for-loop

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

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

  1. 如果定义的颜色集中的值数量小于请求的值数量,一旦到达最后一个,它就会从 1 开始并继续循环。

  2. 不太重要但可能有用的是从默认值集中的任何索引处获取值并使用与 #1 相同的条件开始,因为如果它到达颜色数组中的最后一个值,它将循环回到起点并继续前进。

下面是我的代码的开头以及一些小值,以显示我正在寻找的内容。

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;
}

以及对颜色的要求

backgroundColor: dynamicColors(chartData.length),

在上面的示例中,数据点多于颜色值,需要循环从颜色数组的开头开始。

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

["#90CAF9","#B39DDB","#7E57C2","#78909C","#AED581","#90CAF9","#B39DDB"]

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

["#7E57C2","#78909C","#AED581","#90CAF9","#B39DDB","#7E57C2","#78909C"]

最佳答案

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

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 运算符即可:

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

关于Javascript For 循环(带条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52797080/

相关文章:

php - 将值从数组传递到对象? - PHP

ajax - ASP.NET MVC3 : How to redirect to a view when a post was made using AJAX?

php - 通过 php 将 jQuery 对象(exif 坐标)发送到我在 MySql 中的表

javascript - 触发回调绑定(bind)上的 Backbone.js 未按预期工作

c - C 中数组的索引操作

javascript - 箭头函数与类方法内存占用

c - 尝试声明字符串数组时出现 C 中的段错误。

php - 将带有非数字键的 PHP 数组编码为 JSON 数组

Javascript:通过递归同步回调动态组装模块

将值重新分配给变量时的 Javascript 性能