0

我试图找出一个值是否存在于数组中。每次我运行说 Object has no replace 方法时,以下代码都会给我一个错误。

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(); }

});

起初,无论我输入什么,它都会一直返回“找不到值”,所以我推测这是我在输入水果后按下的换行符/输入。但水果的替换方法拒绝采取。我错过了什么?

4

1 回答 1

0

如果您没有使用过该setEncoding方法,则data事件会获取一个Buffer对象,而不是字符串。

使用toString方法将缓冲区中的数据解码为字符串:

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

您在数组中没有找到任何内容的原因可能是您正在寻找Buffer对象而不是字符串。在这种情况下,您可能根本不需要replace

于 2013-04-23T23:08:39.463 回答