在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);
}
}
读到“B”之后失败了说arr [i] .substr不是函数可能是因为“,+”有人可以帮忙吗?尝试在谷歌搜索,但无法通过类似的情况。
答案 0 :(得分:0)
这里有一些问题。
首先,为了澄清,数组中的第一个元素是一个字符串,之后您从数组中的+
运算符开始遇到问题。运算符正在尝试在数组中添加字符串,但无法将字符串转换为数字,因此返回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("my code is "+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));
}
哪个会输出:
我的代码是A
我的代码是C
我的代码是B
我的代码是X
我的代码是Z
我的代码是R
我的代码是M
你可以看到它在这个JS小提琴中工作:https://jsfiddle.net/3dgdc4sr/1/
希望有所帮助!
答案 1 :(得分:-1)
+"XYZ"
部分被解释为NaN
,它是parseInt的一种短端()NaN
上不知道子串方法;)
如果您不需要+
,则可以将其删除。 (javascript可以写在多行而不需要;)
编辑: 这是您的最终数组,由浏览器解释:
["ABC(A),CDE(C),BFE(B)", NaN, "ZVF(Z)", "RET(R)", NaN]