在javascript中使用regex和replace()替换数组元素

Replacing array elements using regex and replace() in javascript

本文关键字:replace 替换 数组元素 regex javascript      更新时间:2023-09-29

我对JavaScript有点陌生,我正在尝试使用与字符串匹配的regex来替换数组元素,下面是我尝试的代码

<button onclick="myFunction()">ClickHere</button>
<p id="demo"></p>
<script>
function myFunction() {
    var abc = ["deno", "eno","pqr","lenovo"];
    var i,text;
    for(i = 0; i < abc.length; i++) {
        text += abc[i].replace(/no/i, "po");
        document.getElementById("demo").innerHTML = text;
    }
}
</script>

我想用"po"替换数组元素,只要它在数组元素字符串中遇到"no"。

这就是我所期望的:

abc["depo","epo","pqr","lepovo"]

您可以对每个元素执行此操作:

for(var i=0; i < abc.length; i++) {
    abc[i] = abc[i].replace('no', 'po');
}

或使用单行

abc = abc.map(function(x){return x.replace('no', 'po');});

或者使用带有"箭头功能"的一行:

abc = abc.map(x => x.replace('no', 'po'));

更改数组后,可以使用将其转换为字符串

var text = 'abc['; 
for ( var i = 0 ; i < abc.length ; i++ ) {
    text+=''"'+abc[i]+''"';
    if ( i != abc.length - 1) {
        text+=',';
    }
}
text += ']';

测试:

function myFunction() {
    var abc = ["deno", "eno","pqr","lenovo"];
    abc = abc.map(x => x.replace('no', 'po')); // see other 2 alternatives above
    var text = 'abc['; 
    for ( var i = 0 ; i < abc.length ; i++ ) {
        text+=''"'+abc[i]+''"';
        if ( i != abc.length - 1) {
            text+=',';
        }
    }
    text += ']';
    document.getElementById("demo").innerHTML = text;
}
<button onclick="myFunction()">ClickHere</button>
<p id="demo"></p>

var i, text;
for(i = 0; i < abc.length, i++) {
  text += abc[i].replace("no", "po");
}
  console.log(text);

您的代码中需要进行三项更改:

  1. 用空字符串初始化文本。因为默认情况下它是未定义的
  2. 将abc[i].length更改为abc.length
  3. 将循环中abc[i].length后面的逗号替换为分号。

    var abc = ["deno", "eno","pqr","lenovo"];
    var i;
    var text = "";
    for(i = 0; i < abc.length; i++) {
       text += abc[i].replace("no", "po");
    }