Home > Back-end >  replace/replaceAll is not a function
replace/replaceAll is not a function

Time:07-18

I'm trying to use replace in order to remove some characters in a 2d array of strings, but I keep incountering an issue:

      dataArr[j,k] = dataArr[j,k].replaceAll(mCH, "");
                              ^

TypeError: dataArr[(j , k)].replaceAll is not a function
at Object.<anonymous> (C:\Users\magshimim\say-hi-to-sheli-from-me\rafaels-crypto-ninja\thingy\server\index.js:45:35)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47

this is the part of my code using the function:

for (let j = 0; j < dataArr.length; j  )
{
  for (let k = 0; k < dataArr[j].length; k  )

  {
      dataArr[j][k] = dataArr[j][k].replaceAll('"', "");
      dataArr[j][k] = dataArr[j][k].replaceAll(":", "");
      dataArr[j][k] = dataArr[j][k].replaceAll("I", "");
      dataArr[j][k] = dataArr[j][k].replaceAll("L", "");
      dataArr[j][k] = dataArr[j][k].replaceAll("S", "");
      dataArr[j][k] = dataArr[j][k].replaceAll("}", "");
  }
}

Do I need to download anything? maybe there's a problem with my code?

CodePudding user response:

That's not how you index a 2-dimensional array (well, array of arrays; there are no 2-dimensional arrays in JavaScript).

You're looking for dataArr[j][k], not dataArr[j,k].

[j, k] evaluates to just k since the comma is parsed as the comma sequence operator; j is evaluated and thrown away, and k is the result. It is then used to index the top-level dataArr, and indeed, replaceAll is not a method on the arrays nested within.

You could also rewrite this as a double map and use a regexp so you don't need to spell out all of those replacements:

dataArr = dataArr.map(row => row.map(c => String(c).replace(/[":ILS}] /g, "")));

CodePudding user response:

You can use the .replace function instead of replaceAll, if the later is not available.

"any string".replace(new RegExp("to replace", "g"), "new text")

This is by using new RegExp("text to replace", "g") as a string to search

  • Related