节点js .replace()不是函数

时间:2017-09-08 11:52:13

标签: javascript arrays node.js string replace

当我在节点js中运行此代码时,我得到TypeError:filter_list.replace不是一个函数,我也试过使用toString但是这似乎没有帮助,任何人都可以帮忙吗?

var filter_list =["abcd","efgh"];
filter_list.join();
return filter_list.replace(/,/g, ' AND filter:');

6 个答案:

答案 0 :(得分:2)

var filter_list = [ "abcd", "efgh" ]表示filter_listArrayreplace属性函数仅适用于String

您的Array.join()调用未将现有数组Array实例转换(变更)为String - 而是返回带有已加入内容的新字符串

你会想要这个:

var filter_list = ["abcd","efgh"];
var filter_list_as_string = filter_list.join();
return filter_list_as_string.replace(/,/g, 'AND filter:');

或者更简洁:

return ["abcd","efgh"].join().replace(/,/g, 'AND filter:');

我建议您使用TypeScript而不是JavaScript编写Node程序 - 因为它会为您捕获这些打字问题。

答案 1 :(得分:1)

arr.join返回一个字符串,它不会改变数组本身。

var filter_list =["abcd","efgh"];
var str = filter_list.join();
return str.replace(/,/g, ' AND filter:');

答案 2 :(得分:1)

您也可以使用toString()

var filter_list =["abcd","efgh"];
filter_list = filter_list.toString().replace(/,/g, ' AND filter:');
console.log(filter_list)

答案 3 :(得分:0)

因为join没有更改变量,而是返回另一个修改过的变量,所以你的代码应该是:

var filter_list =["abcd","efgh"];
filter_list = filter_list.join(); // assign the joined array back to the variable
console.log(filter_list.replace(/,/g, ' AND filter:'));

答案 4 :(得分:0)

.join()不会改变原始对象。正确的代码应该是:

var filter_list =["abcd","efgh"];
var joined_list = filter_list.join();
return joined_list.replace(/,/g, ' AND filter:');

答案 5 :(得分:0)

将Array.join与参数一起使用。

var filter_list =["abcd","efgh"];
console.log(filter_list.join(' AND filter:'));