2013-02-04 75 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