当我在节点js中运行此代码时,我得到TypeError:filter_list.replace不是一个函数,我也试过使用toString但是这似乎没有帮助,任何人都可以帮忙吗?
var filter_list =["abcd","efgh"];
filter_list.join();
return filter_list.replace(/,/g, ' AND filter:');
答案 0 :(得分:2)
var filter_list = [ "abcd", "efgh" ]
表示filter_list
是Array
。 replace
属性函数仅适用于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:'));