昨天学习了js的对象,了解了js的原型链。在js里面万事万物皆对象,只不过一些原始类型要经过包装对象的包装才能暂时变为对象。数组的本质是什么呢?数组其实就是一组数,也就是链表。每个数只是这个链表上的一个位置。js的对象属性值可以是字符串,但是js的数组对象的属性值只能是数字。经常称为索引(index)。在使用的时候可以把数组当成对象来使用。


1、创建数组的方式

正如茴香豆的茴有六种写法,我们的js对象也有三种的创建方式。如果你看过昨天的博客就会,了解到创建对象的三种方式。

  • 对象直接量

      <script>
    var arr = ['jack','rose','suse'];
    <script>
  • 使用包装对象

      <script>
    var arr = new Array('jack','rose','suse');
    </script>
  • 使用对象原型创建

      <script>
    var arr = Array.create()
    </script>

2、稀疏数组与稠密数组

  • 稀疏数组

稀疏数组就是指数组的索引(index),稀疏数组的索引并不是连续的,而是跳跃的,形如下面的代码。

	<script>
var test = ['name',,'jack','suse'];
console.dir(test);
</script>
  • 稠密数组

    就是数组的索引是连续的,实际上我们平时使用的数组差不多都是稠密数组,在数组的使用上与稀疏数组并没有什么分别。

3、数组的遍历

数组的遍历还是使用for循环的比较多一点。我之前还使用过for in循环,不过for in循环用在对象里面更多一点。

4、数组的方法

  • push
  • unshift
  • pop
  • shift
  • join
  • reverse
  • sort
  • concat
  • slice
  • splice
  • toString
  • map
  • filter
  • every
  • some
  • reduce

以下为上面数组方法的例子,有兴趣的可以对照着看一下,最好是自己坐下demo,才能记得住。

<script>
//push 用来在数组尾部最后一位插入元素
var arr = ['rover','jack','rose','suse'];
arr.push('javascript');
console.dir(arr); //unshift 在数组的头部插入一个元素
arr.unshift('first');
console.dir(arr); //shift 删除数组头部的第一个元素。
arr.shift();
console.dir(arr); //pop 删除数组尾部的最后一个元素
arr.pop();
console.dir(arr); //reverse 返回一个逆序的数组。
//reverse并不返回一个新的数组,而是直接在原数组上修改。
var arrReverse = [1,2,3,4,5,6];
arrReverse.reverse();
console.dir(arrReverse); //sort 排序函数
//当sort没有参数的时候,默认是按照英文字母来排序的。
//如果数组里面是一组数,则需要传入排序的函数。
var str = ['cup','apple','dog','banana'];
str.sort();
console.dir(str);
var num = [45.6,13.99,47.66,32,99,77]; //这里会先把数字转换成字母表顺序。
num.sort(function(a,b){
return a-b
});
console.dir(num); //join 把数组切割成字符串,
var res = str.join('|');
console.dir(res); //concat 相当于php里面array_merge函数了,拼合两个数组。
//不能去重,有点麻烦。
var arr1 = ['apple','banana'];
var arr2 = ['cat','dog'];
res = arr1.concat(arr2);
console.dir(res);
res.concat(['dog','fly']);
res.concat(['dog','fly']);
console.dir(res); //slice 不包括最后一位。
var tmparr = ['apple','banana','cat','dog'];
res = tmparr.slice(0,1);
console.dir(res);
res = tmparr.slice(0,2);
console.dir(res);
console.dir(tmparr); //splice
var sparr = ['apple','banana','cat','dog','eyy','fly','guy'];
msg = sparr.splice(1);
console.dir(msg);
console.dir(sparr);
//从以上两个打印的信息来看,splice是会在原来的数组进行处理的,会截取原数组的值。
//如果只有一个参数,则是从数组的该索引处开始往后截取。
var sparr1 = ['apple','banana','cat','dog','eyy','fly','guy']; //第一个参数为从索引为1处开始截取,第二个参数为一共截取几个。
msg = sparr1.splice(1,2); //
console.dir(msg);
var sparr2 = ['apple','banana','cat','dog','eyy','fly','guy'];
msg = sparr2.splice(1,2,'香蕉','猫猫');
console.dir(msg);
console.dir(sparr2); //如果有第三个参数,则后续的参数为插入参数 //map 这个会对数组中的每一个值应用函数。
var marr = [1,2,3,4];
msg = marr.map(function(a){return a+1;});
console.dir(marr);
console.dir(msg); //every 只有数组中所有的元素都满足条件,才返回true
var earr = [1,2,3,4];
msg = earr.every(
function(a){
return a > 3;
}); console.dir(msg); //some 只要数组中有元素能满足条件就返回true
var somearr = [1,2,3,4];
msg = somearr.some(function(a){
return a > 3;
}); console.dir(msg); //reduce 使用指定的函数将数组元素折叠
var rarr = [1,2,3,4];
msg = rarr.reduce(function(x,y){
return x+y;
}); console.dir(msg); var rarr1 = [1,2,3,4];
msg = rarr1.reduce(function(x,y){
return (x>y)?x:y;
}) console.dir(msg); </script>

5、数组判断

用这个方法还是比较准确的。

<script>
msg1 = Array.isArray([1,2]);
msg2 = Array.isArray({name:'jack'}); console.dir(msg1);
console.dir(msg2);
</script>

最新文章

  1. 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结
  2. 理解Compressed Sparse Column Format (CSC)
  3. socket泄露的问题
  4. hdu-2063-二分图最大匹配
  5. 高通android开发缩写
  6. MSCRM 报表显示 rsprocessingaborted 错误
  7. Go语言获取项目当前路径
  8. DEV GridControl表格数据源为空在表格中间显示提醒字符
  9. JavaScript 一个等号 两个等号 三个等号的区别
  10. ###《High-level event recognition in unconstrained videos》
  11. Win7/Win8.1预订升级Win10失败临时解决方案
  12. ProcessStartInfo.UseShellExecute 属性
  13. ECMA 6 记入
  14. 【转】Ubuntu重装,直接进win7,不进linux的解决方案(添加Ubuntu启动菜单)
  15. linux 常用 命令 笔记二
  16. jq分页插件
  17. 动态加载js,css(项目中需要的)
  18. 【java】Vector
  19. 关于如何在mac系统上安装Git并在码市上建立项目
  20. es6(二):解构赋值

热门文章

  1. 大新闻!HoloLens即将入华商用
  2. HTTPS科普扫盲帖
  3. nodejs实现Websocket的数据接收发送
  4. 如何快速从一个Storage Account拷贝到另一个账号
  5. 网站flash黑屏问题
  6. JavaScript的理解记录(3)
  7. ssh配置文件ssh_config和sshd_config区别
  8. error_reporting()
  9. RabbitMQ 工作队列
  10. zabbix 用 LLD 完全自动化监控 Oracle