jQuery:生成尚未使用的唯一随机颜色
jQuery: generate unique random color that hasn't been used already
http://jsfiddle.net/8ysuw/
Colors.random = function() {
var result;
var count = 0;
for (var prop in this.names)
if (Math.random() < 1/++count)
result = prop;
return { name: result, rgb: this.names[result]};
};
我想确保相同的颜色在被调用后不会出现。目前,它只会继续生成随机颜色,无论有时显示相同的颜色。
此外,我需要清除以前使用过的所有颜色,以便整个过程可以从头开始。
Colors.called = {};
Colors.random = function () {
var keys = Object.keys(this.names),
max = keys.length,
called = Object.keys(this.called),
color = keys[Math.floor(Math.random() * (max - 0)) + 0];
if (Colors.called[color]) {
if (max === called.length) {
Colors.called = {};
}
return Colors.random();
}
Colors.called[color] = true;
return { name: color, rgb: this.names[color] };
};
演示:http://jsfiddle.net/8ysuw/75/
您可以使用所有颜色代码/名称(不确定需要哪一个)填充数组,并在返回之前删除所选元素。
var colorFactory = (function () {
var allColors = ["red", "green", "blue"];
var colorsLeft = allColors.slice(0);
return {
getRandomColor: function () {
if (colorsLeft.length === 0) {
return undefined;
}
var index = Math.floor(Math.random() * colorsLeft.length);
var color = colorsLeft[index];
colorsLeft.splice(index, 1);
return color;
},
reset: function () {
colorsLeft = allColors.slice(0);
}
};
}());
// Usage:
// Get a random color
var someColor = colorFactory.getRandomColor();
// Reset: mark all colors as unused
colorFactory.reset();
相关文章:
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 使用当前日期生成随机id
- 使用onkeyup JS事件检查输入的值是否唯一
- 从a-z中随机选择一个字母
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- RequireJ无法随机加载脚本
- 单击按钮时显示随机字符串
- Lodash映射并返回唯一
- Ajax更新面板随机错误'PRM_MissingPanel'
- 生成随机唯一数据的时间太长,占用了100%的CPU
- 如何从字符串数组中获得8个随机唯一元素
- javascript唯一值数组中的唯一随机值
- jQuery:生成尚未使用的唯一随机颜色
- 使用Javascript生成唯一的随机字符串
- 从JavaScript中的字符串生成HASH(唯一随机)
- 确保随机数据是唯一的
- 随机生成上传图片的唯一id
- 为数据库生成唯一的随机alpha数字随机字符串
- Javascript每次都会生成随机的唯一数字
- 使用javascript生成唯一的随机字母数字