我有一个包含20个RGB颜色值的Javascript数组,如下所示:
defaultColors: [ rgb(58, 185, 180)','rgb(63, 186, 172)','rgb(71, 185, 159)','rgb(80, 185, 146)','rgb(90, 186, 132)','rgb(103, 187, 119)','rgb(117, 188, 104)','rgb(137, 193, 96)','rgb(163, 200, 90)','rgb(189, 206, 87)','rgb(212, 214, 86)','rgb(232, 219, 87)','rgb(245, 221, 89)','rgb(254, 221, 87)','rgb(254, 216, 83)','rgb(254, 206, 78)', 'rgb(253, 193, 72)','rgb(251, 178, 66)','rgb(244, 163, 63)','rgb(240, 150, 60)']
在任何时候,我可能只需要这些颜色中的7种,但我想从全谱中提取颜色。我不只是想要前7种颜色。我需要更像这样的东西:
或者说我需要10种颜色。这看起来更像是这样:
关于如何解决这个问题的建议?
答案 0 :(得分:0)
var defaultColors= [ 'rgb(58, 185, 180)','rgb(63, 186, 172)','rgb(71, 185, 159)','rgb(80, 185, 146)','rgb(90, 186, 132)','rgb(103, 187, 119)','rgb(117, 188, 104)','rgb(137, 193, 96)','rgb(163, 200, 90)','rgb(189, 206, 87)','rgb(212, 214, 86)','rgb(232, 219, 87)','rgb(245, 221, 89)','rgb(254, 221, 87)','rgb(254, 216, 83)','rgb(254, 206, 78)', 'rgb(253, 193, 72)','rgb(251, 178, 66)','rgb(244, 163, 63)','rgb(240, 150, 60)'];
var need = 10;
for (var i=0, every=defaultColors.length/need|0;i<defaultColors.length;i+=every) {
console.log(defaultColors[i]);
}
答案 1 :(得分:0)
当你需要7,均匀间隔,Math.ceil(20/7)= 3时,你可以这样做:
var chosenColors = [];
for(var i =0; i<20 && chosenColors.length<7; i+=3) chosenColors.push(defaultColors[i]);
当你需要10,均匀间隔,Math.ceil(20/10)= 2时,你可以这样做:
var chosenColors = [];
for(var i =0; i<20 && chosenColors.length<10; i+=2) chosenColors.push(defaultColors[i]);
答案 2 :(得分:0)
// pick n elements from a, distibuted evenly
pickn = function(a, n) {
var p = Math.floor(a.length / n)
return a.slice(0, p * n).filter(function(_, i) {
return 0 == i % p
})
}
// test
test = [0,11,22,33,44,55,66,77,88,99,111,222,333,444,555,666,777,888,999]
for (i = 1; i < test.length; i++)
console.log(i, pickn(test, i))