Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能用for循环和splice命令帮助编辑Javascript字符串吗?_Javascript_String - Fatal编程技术网

有人能用for循环和splice命令帮助编辑Javascript字符串吗?

有人能用for循环和splice命令帮助编辑Javascript字符串吗?,javascript,string,Javascript,String,我正在写一个脚本,它将包含一些关于你访问的网站的信息。我已经复制了我的代码的一小部分。这部分代码应该检查访问的网站是否使用了www前缀,并删除该前缀,然后还有另一部分代码我没有粘贴,将域名存储在可变网站中 var website = location.hostname; document.getElementById("displayBefore").innerHTML = website; //test to see the variable if (website[0] == 'w' &am

我正在写一个脚本,它将包含一些关于你访问的网站的信息。我已经复制了我的代码的一小部分。这部分代码应该检查访问的网站是否使用了www前缀,并删除该前缀,然后还有另一部分代码我没有粘贴,将域名存储在可变网站中

var website = location.hostname;
document.getElementById("displayBefore").innerHTML = website; //test to see the variable
if (website[0] == 'w' && website[1] == 'w' && website[2] == 'w' && website[3] == '.') {
    document.getElementById("displayTrue1").innerHTML = "true"; //test to see if the conditional was met
    for (i = 4; i < website.length; i++) {
        website[i - 4] = website[i]; //this is not rewriting anything
        document.getElementById("displayPos0").innerHTML = website[i]; //test to see if the for loop has run
    }
    document.getElementById("displayDuring").innerHTML = website; //test to see the variable
    website.splice(0, 4); //this is breaking everything after it
    document.getElementById("displayAfter").innerHTML = website; //test to see the variable
}
代码的两部分不起作用,如下所示:

website[i - 4] = website[i];
这几乎可以将4个空格中的字母向左移动(消除“www.”)


这实际上导致在任何有效的代码中根本不显示它之后的内容。有人能告诉我我做错了什么吗?

splice
是一种数组方法,不适用于字符串(它们是不可变的)。使用
split
方法将变量设置为数组以对其进行操作,然后使用
join
方法将其重新连接在一起:

var websiteStr = location.hostname;
var website = websiteStr.split('');
console.log("displayBefore: " + website.join(''));
if (websiteStr.indexOf("www.") === 0) {
    console.log("true");
    /*for (var i = 4; i < website.length; i++) {
        website[i - 4] = website[i];
        console.log("displayPos0: " + website[i]);
    }*/
    console.log("displayDuring: " + website.join(''));
    website.splice(0, 4);
    console.log("displayAfter: " + website.join(''));
}
为此:

if (websiteStr.indexOf("www.") === 0) {
它能更简洁地完成同样的事情

对于固定代码,它现在显示:

displayBefore: www.google.com
true
displayDuring: www.google.com
displayAfter: google.com

令人惊讶的是,一个命令解决了所有问题。我不知道为什么我认为拼接是为了弦。谢谢你提供的其他基本提示。@AaronT:for循环的作用是什么?看起来不太对。看看你的评论。循环的本意是移动字符串中的字符,但现在不需要了。@AaronT:这不会做任何事情,因为字符串是不可变的。不客气。当你可以的时候,看看这页。
if (website[0] == 'w' && website[1] == 'w' && website[2] == 'w' && website[3] == '.') {
if (websiteStr.indexOf("www.") === 0) {
displayBefore: www.google.com
true
displayDuring: www.google.com
displayAfter: google.com