2017-09-08 1 views
0

lorsque j'exécute ce code dans le noeud js je reçois TypeError: filter_list.replace n'est pas une fonction, j'ai essayé d'utiliser toString aussi, mais cela ne semble pas aider, quelqu'un peut-il aider?Noeud js .replace() n'est pas une fonction

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

Répondre

2

var filter_list = [ "abcd", "efgh" ] signifie que filter_list est un Array. La fonction de propriété replace s'applique uniquement à String.

Votre appel Array.join() ne convertit pas (muter) un tableau existant Array exemple dans une String - au lieu qu'il retours une nouvelle chaîne avec le contenu joint.

Vous voulez ceci:

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

Ou plus succinctement: - car il attrapera ces questions pour vous taper

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

Je vous recommande de programmer pour le nœud dactylographiée au lieu de JavaScript.

+0

Dai, vous n'avez pas besoin de remplacer – galkin

+0

Merci, cette bien fonctionné – dovefromhell

1

arr.join renvoie une chaîne, elle ne modifie pas le tableau lui-même.

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

Parce que join ne change pas la inplace variable, au contraire, elle retourne une autre variable modifiée, de sorte que votre code doit être:

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:'));

0

.join() ne mute pas l'original objet. Le code correct devrait être:

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

Vous pouvez utiliser toString() aussi,

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

0

Utilisation Array.join avec l'argument.

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