为什么我不能使用splice()将子字符串插入数组?

时间:2017-02-07 18:24:02

标签: javascript html string join splice

请原谅这个小问题,但这真是在唠叨我。我跟随了mozilla示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice 有人可以解释为什么这不起作用:

<body>
  <p id="test">
  </p>
</body>

var url = "teststring";

document.getElementById("test").innerHTML = (url.split('').splice(2,0,"teststring").join(''));

jsFiddle:https://jsfiddle.net/uyk2p437/1/

2 个答案:

答案 0 :(得分:1)

Array#splice方法返回一个包含已删除元素的数组,在您的情况下,它将为空,并且您正在应用生成空字符串的Array#join方法。

改为使用String#slice(或String#substring)方法:

url.slice(0, 2) + "teststring" + url.slice(2)

var url = "teststring";

document.getElementById("test").innerHTML = url.slice(0, 2) + "1" + url.slice(2);
<body>
  <p id="test">
  </p>
</body>

答案 1 :(得分:0)

因为splice的返回值是已删除的项目。不是修改过的数组。它在适当位置修改

根据MDN

  

返回值

     

包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

&#13;
&#13;
var url = "teststring";
var split = url.split('');
split.splice(2,0,"teststring");   // this returns an empty array because you aren't removing anything
// but the value in split is now:
// ['t','e','t','e','s','t','s','t','r','i','n','g','s','t','s','t','r','i','n','g']
console.log(split.join(''));      // gives you the expected result
&#13;
&#13;
&#13;

或者您可以像Pranav的回答一样使用slice,或substrsubstring