请问在javascript里怎么识别一个变量是数组还是字符串?
请问在javascript里怎么识别一个变量是数组还是字符串? 问题点数:100、回复次数:8Top
1 楼yuanhang03(远航)回复于 2004-11-03 22:19:56 得分 0
先判断这个变量是不是一个对象,如果是对象,才有可能是数组。
然后判断变量的构造器。
记不太清了,如果构造器是Array则是数组,如果是String则是字符串。Top
2 楼net_lover(【孟子E章】)回复于 2004-11-03 22:24:42 得分 5
<script>
function isArray (object) {
if (!window.Array)
return false;
else
return object.constructor == window.Array;
}
var a = new Array();
var b = String("ssssssssssssssss");
alert(isArray(a))
alert(isArray(b))
</script>Top
3 楼saucer(思归)回复于 2004-11-03 22:25:09 得分 0
if (x.length != null)
alert("array");
else
alert("not array");Top
4 楼xiahouwen(武眉博<活靶子.NET>)回复于 2004-11-03 22:28:46 得分 5
saucer的方法
我试了一下 string和array的length都不是null都有值啊
比如
<script language="javascript">
var a=String("ssssssssssssssss");
var b= new Array("x","x");
alert(a.length);
alert(b.length);
</script>
孟子的方法可以Top
5 楼net_lover(【孟子E章】)回复于 2004-11-03 22:29:18 得分 8
<script>
function isArray (object) {
if (!window.Array)
return false;
else
return object.constructor == window.Array;
}
function isString (object) {
if (!window.String)
return false;
else
return object.constructor == window.String;
}
var a = new Array();
var b = String("ssssssssssssssss");
var c = "ssssssssssssssss";
alert(isArray(a))
alert(isArray(b))
alert(isArray(c))
alert(isString(a))
alert(isString(b))
alert(isString(c))
</script>Top
6 楼saucer(思归)回复于 2004-11-03 22:37:56 得分 2
yes, sorry, my method is too crude, net_lover's solution is better
if (y.length != null && typeof(y)=="object")
alert("array");
else
alert("not array");
then, this doesn't exclude y is an object and has a length propertyTop
7 楼xiahouwen(武眉博<活靶子.NET>)回复于 2004-11-04 08:56:25 得分 0
经测试
<script>
// var y="xxxx"; //测试1 这样就可以正确验证,
var y= new String("xxxxx");//测试2 这样就不正确了
if (y.length != null && typeof(y)=="object")
alert("array");
else
alert("not array");
</script>
仍然有问题的,
请问 这两种声明字符串的方法有何不同啊?Top
8 楼runAndRun(路漫漫)回复于 2004-11-04 09:02:55 得分 80
function isArray()
{
if (typeof arguments[0] == 'object')
{
var criterion = arguments[0].constructor.toString().match(/array/i);
return (criterion != null);
}
return false;
}
这是一行之有效的方法,我试过了:)
Top




