2013-02-04 74 views
1

我试着用javascript模块 https://github.com/Marak/colors.js的Node.js的Javascript随机彩色打印

在使用终端node.js中打印随机颜色的颜色 随机生成器的工作原理,但周期的东西混淆了语法,并不会正确地打印颜色。

var colors = require('colors'); 



Array.prototype.random = function (length) { 
     return this[Math.floor((Math.random()*length))]; 
} 

var color = ['.yellow', '.cyan', '.magenta', '.red', '.green', '.blue', '.rainbow', '.zebra'] 
var rcolor = color.random(color.length) 

console.log(rcolor + 'rcolor') 
+0

你是什么意思的“*不会正确地打印颜色*”?是否按预期打印点,颜色名称和“rcolor”? – Bergi

回答

0

首先,删除所有的期间。然后,你应该能够做这样的事情:

console.log(colors[randomColor]("Hello, world!")); 

或者:

console.log("Hello, world!"[randomColor]); 

这工作,因为a.b相当于a["b"],除了在后者,你可以用一个表达式替换"b"。由于颜色模块支持colors.red(someString)someString.red,我们可以简单地将其更改为使用[]语法并在其中输入变量。

0

以下代码(距离您所在的地方不远)将从给定列表中打印随机颜色。

var colors = require("colors"); 

Array.prototype.random = function() { 
    return this[Math.floor(Math.random() * this.length)]; 
}; 

var colorsList = [".yellow", ".red", ".blue"]; 
var rColor = colorsList.random(); 

console.log(colorsList); 
console.log(rColor); 

它包括[email protected],但我不知道为什么你需要它为你写的。

1

你需要改变你的代码一点点

var colors = require('colors'); 

Array.prototype.random = function (length) { 
    return this[Math.floor((Math.random()*length))]; 
} 

var color = ['yellow', 'cyan', 'magenta', 'red', 'green', 'blue', 'rainbow', 'zebra'] 
var rcolor = color.random(color.length) 

console.log(("Print in color " + rcolor)[rcolor]); 

这是因为添加颜色原型String类,所以在JavaScript中,你可以使用[]始终执行对象上的属性的方法,如果能在这样的每一个字符串中使用它:

console.log("Hello colors!"[rColor]); 
+1

真棒谢谢你!这对我有效。我试着在一个更大的聊天服务器程序中使用它,当每个新的套接字登录时它会给出一个唯一的编号,然后理想地使用这个颜色脚本为每个用户生成不同的颜色。 – sean