gpt4 book ai didi

javascript split() 数组包含

转载 作者:行者123 更新时间:2023-12-04 22:44:49 25 4
gpt4 key购买 nike

在学习 JavaScript 时,我不明白为什么打印 Sting.split() 方法(使用正则表达式作为参数)返回的数组时的输出如下所述。

var colorString = "red,blue,green,yellow";
var colors = colorString.split(/[^\,]+/);
document.write(colors); //this print 7 times comma: ,,,,,,,

但是,当我打印颜色数组的单个元素时,它会打印一个空字符串、三个逗号和一个空字符串:

 document.write(colors[0]);  //empty string
document.write(colors[1]); //,
document.write(colors[2]); //,
document.write(colors[3]); //,
document.write(colors[4]); //empty string
document.write(colors[5]); //undefined
document.write(colors[6]); //undefined

那么,为什么直接打印数组就给出了七个逗号。

虽然我认为在第二个输出中使用三个逗号是正确的,但我不明白为什么有一个开始(在索引 0 处)和结束空字符串(在索引 4 处)。

请解释一下我搞砸了。

最佳答案

/[^\,]+/ 拆分一个或多个不是逗号的字符。因此,JavaScript 会将您的字符串拆分为 redblue 等。由此产生的剩余部分是开头的空字符串(从索引 0 到 0 的子字符串),逗号和末尾的空字符串。如果您超出数组的范围,您将得到 undefined(与任何数组一样)。

red,blue,green,yellow
xxx xxxx xxxxx xxxxxx <-- x is what is being eaten during split, because it's the delimiter

您只需要 .split(","),它以逗号分隔,这样逗号就被吃掉了,剩下的就是颜色。

现在,当您执行 document.write(someArray) 时,数组将转换为字符串以便显示。这实际上意味着 someArray.join() 被调用,默认情况下在两者之间放置逗号。因此,逗号与逗号相连,从而产生更多逗号。

关于javascript split() 数组包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com