我有一个动态列表,将样本数据提取为
var myStringArray = [10, 20];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
alert(myStringArray[i]);
}
&#13;
如果我使用循环,它会给我像
这样的数据[
1
0
,
2
0
]
我需要数据
10
20
答案 0 :(得分:1)
如果我复制并运行相同的代码,它将根据需要提供输出。你从任何地方得到它的方式是用字符串给你这个数据,即&#34; [10,20]&#34;。所以,它现在不是一个数组,而是一个包含10个字符的字符串([,1,0,等等)。这就是你在循环中输出这些字符的原因。
var myStringArray = [10, 20];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
alert(myStringArray[i]);
}
如果您从某些资源获取此值,例如ajax请求,您可以使用JSON.parse
将其转换为数组,因此您的代码将变为:
var myString = "[10, 20]";
var myStringArray = JSON.parse( myString );
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
alert(myStringArray[i]);
}
答案 1 :(得分:0)
以下代码认为数组字符表示为String。遍历每个角色。如果是开始或结束括号,则继续下一次迭代。 ,
表示已完成的数字。否则将整数字符连接为String类型:
var arrayLength = myStringArray.length;
var dat = "";
var arrayLength = myStringArray.length;
var dat = "";
for (var i = 0; i < arrayLength; i++) {
if(myStringArray[i] == ","){
alert(dat); // alert the completed value
dat = "";
} else if(myStringArray[i] == "[" || myStringArray[i] == "]"){
continue; // Move to the next iteration
} else {
dat += ("" + myStringArray[i]); //Concatenate strings
}
}
但是,您的代码似乎在运行代码段时起作用。我想你可以使用我的例子作为视觉辅助,因为我已经分解了各个步骤。
另外,正如Felix Kling在我的评论中指出的那样,你也可以使用JSON.parse()
:
JSON.parse(myStringArray, function(key,val) {
console.log(val);
});
这是一个小提琴:https://jsfiddle.net/7h4z6nsm/1/