js 数组是object对象吗 js如何判断一个对象是不是Array
js \u6570\u7ec4arrar\u6539\u4e3a\u6570\u7ec4object\u5bf9\u8c61•object \u7c7b\u578b\uff1a
◦ \u521b\u5efa\u65b9\u5f0f\uff1a
/*new \u64cd\u4f5c\u7b26\u540e\u9762Object\u6784\u9020\u51fd\u6570*/ var person = new Object(); person.name = "lpove"; person.age = 21; /*\u6216\u8005\u7528\u5bf9\u8c61\u5b57\u9762\u91cf\u7684\u65b9\u6cd5*/ var person = { name: "lpove"; age : 21; }
•array\u7c7b\u578b
◦ \u521b\u5efa\u65b9\u5f0f\uff1a
`var colors = new Array(\u201cred\u201d,\u201dblue\u201d,\u201dyellow\u201d);
• \u533a\u522b\u548c\u4e0d\u89e3
◦ \u6bd4\u5982\u6709\u4e00\u4e2a\u6570\u7ec4a=[1,2,3,4]\uff0c\u8fd8\u6709\u4e00\u4e2a\u5bf9\u8c61a={0:1,1:2,2:3,3:4}\uff0c\u7136\u540e\u4f60\u8fd0\u884calert(a[1])\uff0c\u4e24\u79cd\u60c5\u51b5\u4e0b\u7684\u8fd0\u884c\u7ed3\u679c\u662f\u76f8\u540c\u7684\uff01\u8fd9\u5c31\u662f\u8bf4\uff0c\u6570\u636e\u96c6\u5408\u65e2\u53ef\u4ee5\u7528\u6570\u7ec4\u8868\u793a\uff0c\u4e5f\u53ef\u4ee5\u7528\u5bf9\u8c61\u8868\u793a\uff0c\u90a3\u4e48\u6211\u5230\u5e95\u8be5\u7528\u54ea\u4e00\u79cd\u5462\uff1f
\u6211\u540e\u6765\u624d\u77e5\u9053\uff0c\u6570\u7ec4\u8868\u793a\u6709\u5e8f\u6570\u636e\u7684\u96c6\u5408\uff0c\u800c\u5bf9\u8c61\u8868\u793a\u65e0\u5e8f\u6570\u636e\u7684\u96c6\u5408\u3002\u5982\u679c\u6570\u636e\u7684\u987a\u5e8f\u5f88\u91cd\u8981\uff0c\u5c31\u7528\u6570\u7ec4\uff0c\u5426\u5219\u5c31\u7528\u5bf9\u8c61\u3002
\u5f53\u7136\uff0c\u6570\u7ec4\u548c\u5bf9\u8c61\u7684\u53e6\u4e00\u4e2a\u533a\u522b\u662f\uff0c\u6570\u7ec4\u7684\u6570\u636e\u6ca1\u6709\u201d\u540d\u79f0\u201d\uff08name\uff09\uff0c\u5bf9\u8c61\u7684\u6570\u636e\u6709\u201d\u540d\u79f0\u201d\uff08name\uff09\u3002
\u4f46\u662f\u95ee\u9898\u662f\uff0c\u5f88\u591a\u7f16\u7a0b\u8bed\u8a00\u4e2d\uff0c\u90fd\u6709\u4e00\u79cd\u53eb\u505a\u201d\u5173\u8054\u6570\u7ec4\u201d\uff08associative array\uff09\u7684\u4e1c\u897f\u3002\u8fd9\u79cd\u6570\u7ec4\u4e2d\u7684\u6570\u636e\u662f\u6709\u540d\u79f0\u7684\u3002
• \u4f46\u662f\u5728\u300ajavascript DOM\u300b\u4e2d\uff0c\u4e0d\u63a8\u8350\u6211\u4eec\u4f7f\u7528 \u5173\u8054\u6570\u7ec4\uff1b
◦ \u5173\u8054\u6570\u7ec4\uff1a
var lpove = Array(); lpove[name] = "lei"; lpove[age] = 21; lpove[living] = true; /*\u5bf9\u8c61\u6784\u9020*/ var lpove = Object(); lpove.name = "lei"; lpove.age = 21; lpove.living = true;
\u56e0\u4e3a\u5728\u672c\u8d28\u4e0a\u4f60\u521b\u5efa\u7684\u5173\u8054\u6570\u7ec4\u7684\u6027\u8d28\u5c31\u662fArray\u5bf9\u8c61\u7684\u5c5e\u6027
\u672c\u6765\u5224\u65ad\u4e00\u4e2a\u5bf9\u8c61\u7c7b\u578b\u7528typeof\u662f\u6700\u597d\u7684\uff0c\u4e0d\u8fc7\u5bf9\u4e8eArray\u7c7b\u578b\u662f\u4e0d\u9002\u7528\u7684
\u53ef\u4ee5\u4f7f\u7528 instanceof\u64cd\u4f5c\u7b26
var arrayStr=new Array("1","2","3","4","5");
alert(arrayStr instanceof Array);
\u5f53\u7136\u4ee5\u4e0a\u5728\u4e00\u4e2a\u7b80\u5355\u7684\u9875\u9762\u5e03\u5c40\u91cc\u9762\u662f\u6ca1\u6709\u95ee\u9898\u7684\uff0c\u5982\u679c\u662f\u590d\u6742\u9875\u9762\u60c5\u51b5\uff0c\u5165\u83b7\u53d6\u7684\u662fframe\u5185\u90e8\u7684Array\u5bf9\u8c61\uff0c\u53ef\u4ee5\u7528\u8fd9\u4e2a\u51fd\u6570\u5224\u65ad\uff1a
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
1、数组的创建
var arrayObj = new Array(); //创建一个数组
var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
2、数组的元素的访问
var testGetArrValue=arrayObj[1]; //获取数组的元素值
arrayObj[1]= "这是新值"; //给数组元素赋予新的值
3、数组元素的添加
arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
4、数组元素的删除
arrayObj.pop(); //移除最后一个元素并返回该元素值
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
5、数组的截取和合并
arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
6、数组的拷贝
arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
7、数组元素的排序
arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.sort(); //对数组元素排序,返回数组地址
8、数组元素的字符串化
arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用
不是;
比如在javascript中,可以这样定义一个对象:
var a={“城市”:”北京”,”面积”:16800,”人口”:1600};
但是,也可以定义成一个关联数组:
a["城市"]=”北京”;
a["面积"]=16800;
a["人口"]=1600;
这起初也加剧了我对数组和对象的混淆,后来才明白,在Javascript语言中,关联数组就是对象,对象就是关联数组。这一点与php语言完全不同,在php中,关联数组也是数组。
比如运行下面这段javascript:
var a=[1,2,3,4];
a['foo']=’Hello World’;
alert(a.length);
最后的结果是4,也就是说,数组a的元素个数是4个。
但是,运行同样内容的php代码就不一样了:
< ? php
$a=array(1,2,3,4);
$a["foo"]=”Hello world”;
echo count($a);
? >
扩展阅读:emahx文件的打开软件 ... js list添加对象 ... java map转jsonobject对象 ... java中json转换成对象 ... objectmapper json转对象 ... java object转数组 ... js splice ... object对象转为json对象 ... array splice ...