请原谅这个小问题,但这真是在唠叨我。我跟随了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/
答案 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
返回值
包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。
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;
或者您可以像Pranav的回答一样使用slice
,或substr
或substring
。