Javascript 通过字符串数组的Java脚本子字符串
在js中有一个字符串数组Javascript 通过字符串数组的Java脚本子字符串,javascript,jquery,arrays,Javascript,Jquery,Arrays,在js中有一个字符串数组 var arr=["ABC(A),CDE(C),BFE(B)",+ "XYZ(X)","ZVF(Z)","RET(R)",+ "MXE(M)"]; 现在需要迭代这个过程,得到括号中的最后一个代码,匹配该值并对其执行一些操作 我正在尝试使用子字符串,但在控制台中遇到了一个错误,如arr[I]。一旦substr到达数组中的,+部分,它就不是一个函数 for(var i=0,len=arr.length;i<len;i++) { if(arr[i].subs
var arr=["ABC(A),CDE(C),BFE(B)",+
"XYZ(X)","ZVF(Z)","RET(R)",+
"MXE(M)"];
现在需要迭代这个过程,得到括号中的最后一个代码,匹配该值并对其执行一些操作
我正在尝试使用子字符串,但在控制台中遇到了一个错误,如arr[I]。一旦substr到达数组中的,+部分,它就不是一个函数
for(var i=0,len=arr.length;i<len;i++)
{
if(arr[i].substr(length-1,length-2)!=L)
{
console.log("my code is "+arr[i].substr(length-1,length-2);
}
}
迭代数组的代码
for(var i=0,len=arr.length;i<len;i++)
{
if(arr[i].substr(length-1,length-2)!=L)
{
console.log("my code is "+arr[i].substr(length-1,length-2);
}
}
对于(var i=0,len=arr.length;i将+“XYZ”
部分解释为NaN
,这是parseInt()子字符串方法的一种缩写,在NaN
上不知道)
如果你不需要这个+
,你可以把它删除。(javascript可以写在多行上,而不需要这样做;)
编辑:
这是由浏览器解释的最终数组:
["ABC(A),CDE(C),BFE(B)", NaN, "ZVF(Z)", "RET(R)", NaN]
这里有几个问题
首先,澄清一下,数组中的第一个元素是单个字符串,然后从数组中的+
运算符开始出现问题。运算符试图将字符串添加到数组中,但未能将字符串转换为数字,因此返回NaN
您的阵列:
var arr=["ABC(A),CDE(C),BFE(B)",+
"XYZ(X)","ZVF(Z)","RET(R)",+
"MXE(M)"];
实际处理为:
[“ABC(A)、CDE(C)、BFE(B)”,NaN,“ZVF(Z)”,“RET(R)”,NaN]
请注意,数组中的第一个元素是单个字符串“ABC(a)、CDE(C)、BFE(B)”
请记住,即使它包含逗号,它仍然是单个数组元素
其次,在if语句if(arr[i].substr(length-1,length-2)!=L)
中,变量L
没有在任何地方定义。这将抛出错误
最后,在字符串操作语句console.log(“我的代码是”+arr[i].substr(length-1,length-2);
中要使用substring()
而不是substr()
因为您要移动到一个特定位置,而不是按一定数量的字符移动。此外,length
未定义。您需要改为使用arr[i].length将其更改为数组元素的长度
总的来说,通过这些更改,您的代码将如下所示:
var arr=["ABC(A)","CDE(C)","BFE(B)","XYZ(X)","ZVF(Z)","RET(R)","MXE(M)"];
for(var i=0; i < arr.length;i++) {
console.log("my code is "+arr[i].substring(arr[i].length-1,arr[i].length-2));
}
var-arr=[“ABC(A)”、“CDE(C)”、“BFE(B)”、“XYZ(X)”、“ZVF(Z)”、“RET(R)”、“MXE(M)”;
对于(变量i=0;i
这将产生:
我的代码是A
我的代码是C
我的代码是B
我的代码是X
我的代码是Z
我的代码是R
我的代码是M
您可以看到它在这个JS小提琴中工作:
希望有帮助!这里不是输入错误吗:substr(长度-1,长度-2!=L)。应该是substr(长度-1,长度-2)!=L我认为您的数组定义无效,字符串前面的+
将被解释为一元运算符,这将导致各种奇怪的行为。为什么要使用+
?您必须删除+
,因为它会导致字符串值转换为其当前位置的数字。我不知道n知道您希望它做什么吗?字符串前面的+隐式地转换为整数…尝试console.log(typeof+“12”)
谢谢!!明白了,希望能有一些关于堆栈溢出的魔术来解决这个问题,最后创建了一个新的数组,没有+只使用代码。谢谢,答案不完全正确,但它有助于理解我的错误