我希望使用for循环来完成以下任务。
我将在数组中定义一组值,一组十六进制值作为图表的默认颜色。我想使用具有2个选项的循环来获取定义数量的这些值。
下面是我的代码的开始,以及一些小的值来显示我正在寻找的东西。
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"]
发布于 2018-10-14 04:45:55
您可以使用带有列表长度的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
https://stackoverflow.com/questions/52797080
复制相似问题