2013-04-23 78 views
0

我試圖找出數組中是否存在值。下面的代碼每次運行時都會給我一個錯誤,表示Object沒有替換方法。在Javascript中查找數組中的值

var fruits = ['apples', 'pears', 'bananas']; 

console.log("Enter in a fruit name"); 

process.stdin.on('data', function(fruit) { 

    fruit = fruit.replace("\n", ""); 
    if (fruits.indexOf(fruit) >= 0) { 
     console.log("The value has been found in the array"); 
     process.exit(); } 

    else { 
     console.log("Value not found"); 
     process.exit(); } 

}); 

起初,它保持返回無論我輸入了什麼「找不到值」,所以我推測這是換行/輸入進入我的水果後,我按。但是水果的替代方法拒絕採用。我錯過了什麼?

+0

什麼是'水果'? – 0x499602D2 2013-04-23 23:03:37

+0

嘗試'console.log(JSON.stringify(水果))'看看你在尋找什麼。 – Bergi 2013-04-23 23:04:49

回答

0

如果您還沒有使用setEncoding方法,則data事件將獲得Buffer對象,而不是字符串。

使用toString方法對數據進行解碼的緩衝區的字符串:

var fruitName = fruit.toString().replace("\n", ""); 

這有可能是你沒有找到在陣列中的任何原因是你要找的Buffer對象而不是一個字符串。在這種情況下,你可能不需要replace

+0

謝謝!如果其他人對此感興趣的話,可以用Guffa的幫助拼湊起來: https://gist.github.com/jennojenno/5448370 – jenno 2013-04-23 23:38:27