Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何从字符串";中获取数组;[1,12,2,3,4]“是吗?”;?_Javascript - Fatal编程技术网

Javascript 如何从字符串";中获取数组;[1,12,2,3,4]“是吗?”;?

Javascript 如何从字符串";中获取数组;[1,12,2,3,4]“是吗?”;?,javascript,Javascript,在我的JSP中,隐藏变量值显示如下 <input type="hidden" name="" value="[1, 12, 2, 3, 4]" id="rollNumber"/> rollNo值为[1,12,2,3,4] 当我尝试迭代rollNo时,它会给出如下元素: [ 1 , space 1 2 , space etc... elements 我只需要像'112434' 您的输入字段具有字符串值“[1,12,2,3,4]” 仅仅因为可以将数组字符串化为类似的字符串,并不

在我的JSP中,隐藏变量值显示如下

<input type="hidden" name="" value="[1, 12, 2, 3, 4]" id="rollNumber"/> 
rollNo
值为
[1,12,2,3,4]

当我尝试迭代
rollNo
时,它会给出如下元素:

[
1
,
space
1
2
, 
space  etc... elements
我只需要像
'112434'

  • 您的输入字段具有字符串值
    “[1,12,2,3,4]”

  • 仅仅因为可以将数组字符串化为类似的字符串,并不意味着这个字符串就神奇地成为了一个数组


您可以使用
eval
将字符串化的Javascript文本转换为真实对象,但我强烈建议不要这样做


相反,找到一种表示数据的新方法,并将其解析为数组

也许,使用Javascript的字符串函数:

<input type="hidden" name="" value="1,12,2,3,4" id="rollNumber"/> 
<input type="hidden" name="" value="1,12,2,3,4" id="rollNumber"/> 
:

仅仅从控制台输出很难区分(它必须是字符串,这样作为一个人,您就可以读取它),但这是两件截然不同的事情



或者,如果需要保持
输入
字段值的原样,可以使用
JSON.parse
将其解析为JSON(尽管除了最新的浏览器外,您必须跳转才能使其在所有浏览器上可用)。

您需要解析返回到javascript数组中的字符串值。您可以使用
JSON.parse
方法:

var rollNo = document.getElementById("rollNumber").value; 
var values = JSON.parse(rollNo);
for (var i = 0; i < values.length; i++) {
    var item = values[i];
}
var rollNo=document.getElementById(“rollNumber”).value;
var values=JSON.parse(rollNo);
对于(变量i=0;i

备注:
JSON.parse
方法内置于现代浏览器中,但如果需要支持传统浏览器,可以将脚本包含到页面中。

值是字符串,而不是对象。你需要转换它。我会这样做


你是如何迭代它的

请记住document.getElementById(“”).value将返回一个字符串

试试这个

<input type="hidden" name="" value="1,12,2,3,4" id="rollNumber"/> 

rollNo = document.getElementById("rollNumber").value.split(',');
for(i=0;i<rollNo.length;i++){
console.log(rollNo[i]);
}

rollNo=document.getElementById(“rollNumber”).value.split(',');

对于(i=0;i它看起来像JSON字符串,您必须使用eval对其进行解析

var rollNo = document.getElementById("rollNumber").value;
var rollNoArray = eval(rollNo);
for(var i=0;i<rollNoArray .length;i++){
    alert(rollNoArray [i]);
}
var rollNo=document.getElementById(“rollNumber”).value;
var rollNoArray=评估(rollNo);

对于(var i=0;i检查此工作演示:


rollNo=document.getElementById(“rollNumber”).value;
var arrayvar=评估(rollNo);
var urstring=“”;

对于(i=0;i如果您需要使用给定的格式,并且您不想或不能使用
JSON.parse
这可能会起到以下作用:

document.getElementById("rollNumber").value.replace(/[\[\]\s]+/g,'').split(/,/)

只需使用一个简单的正则表达式就可以做到这一点

var text = document.getElementById("rollNumber").value; 
var pattern = /\d+/g // matches all instances of one or more digits
var result = text.match(pattern)

简单而优雅,对所有包含数字的字符串都有效,带有任何分隔符。getElementById确实返回正确的元素。+1您忘记为他将其转换为数字;)扩展string.prototype如何,这样他就可以简单地编写
var x=“rollNumber”。getRoll(2);
Hahao仅使用(,)进行拆分作为一个参数,它也会返回“[']”括号。但是如果我使用document.getElementById(“rollNumber”).value.replace(/[[]\s]+/g,”).split(/,/),那么它工作得很好。谢谢。你还没有检查我的标记。是吗?我在隐藏输入中的值没有“[”或“]”。请注意用户999的回答:)只使用(,)进行拆分作为一个参数也会返回“['']”括号。但是如果我使用document.getElementById(“rollNumber”).value.replace(/[[]\s]+/g',).split(/,/),那么它工作得很好。谢谢。只有使用(,)作为参数进行拆分时,才会返回“['']”括号。但是如果我使用document.getElementById(“rollNumber”).value.replace(/[[]\s]+//g',).split(/)那么它就可以正常工作了。谢谢。@Prakash:这就是为什么在我建议使用
split
时,输入一开始就没有
[
]
var rollNo = document.getElementById("rollNumber").value;
var rollNoArray = eval(rollNo);
for(var i=0;i<rollNoArray .length;i++){
    alert(rollNoArray [i]);
}
<html>
<head>
<body>
<input type="hidden" name="" value="[1, 12, 2, 3, 4]" id="rollNumber"/> 
<script>
rollNo = document.getElementById("rollNumber").value;
var arrayvar=eval(rollNo);
var urstring="";
for (i=0;i<arrayvar.length;i++)
{
    urstring+=arrayvar[i]+" ";
}
document.write(urstring);
</script>
</body>
</html>
document.getElementById("rollNumber").value.replace(/[\[\]\s]+/g,'').split(/,/)
var text = document.getElementById("rollNumber").value; 
var pattern = /\d+/g // matches all instances of one or more digits
var result = text.match(pattern)