首页 > 解决方案 > 使用for循环在一个字符串中插入多个字符串

问题描述

我试图在另一个字符串的多个位置插入多个字符串,但没有任何运气

这是我尝试过的代码。

elInnerHtml = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";

var testPos = ["10", "15", "20"];
var output = '';
cnt = 0;

for (var i = 0; i < testPos.length; i++) {
  output += [elInnerHtml.slice(0, testPos[i]), '<span class="Test-' + ++cnt + '">', elInnerHtml.slice(testPos[i])].join('');
}

console.log(output);

当我运行代码时,它会显示许多相同的代码行。我怎样才能解决这个问题?

标签: javascriptfor-loopjoinpositionslice

解决方案


您可以通过从右侧迭代来减少数组,因为字符串会更改添加的 span 元素的索引。

var string = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
    indices = [10, 15, 20],
    result = indices.reduceRight((s, p, i) => `${s.slice(0, p)}<span class="test-${i + 1}">${s.slice(p, ++p)}</span>${s.slice(p)}`, string);

console.log(result);


推荐阅读