Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript 通过字符串数组的Java脚本子字符串_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 通过字符串数组的Java脚本子字符串

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

在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].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”)
谢谢!!明白了,希望能有一些关于堆栈溢出的魔术来解决这个问题,最后创建了一个新的数组,没有+只使用代码。谢谢,答案不完全正确,但它有助于理解我的错误