不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些。因此本篇主要记录JS的数组使用和经常用法。要点例如以下:

1,数组创建

两种方式:

var stu = new Array();
var stu1 = [];

这就和定义对象一样:

var cat = new Object();
var cat1 = {};

推荐用后者,比較简洁。如:

var score = [1, 2, 3];

数组里的东西能够是不同类型的,数组里面能够是基础类型也能够是对象或数组:

var array = [163,
    "netease",
    {color: "red"},
    [],
    true
];
console.log(array[0]);
console.log(array[2].color);

再来个:


2,length()函数,得到数组的长度
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
console.log(stu.length); // 3
stu = [];
console.log(stu.length); //0

通过stu[i]訪问并改动第i个元素.

3,indexof()函数。假设能找到返回找到的索引,找不到返回-1。勇于推断一个元素在不在数组里
var tel = [101, 110, 139];
var index = tel.indexOf(101);
console.log(index);
4,forEach()函数
forEach 须要接受一个回调函数
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
var add5 = function(item, number, array){item.score += 5;
};
stu.forEach(add5);
console.log(stu[0].score);

这个回调对输入參数有要求,各自是当前的item,item的索引和整个array.forEach就会自己主动遍历每一行,然后将每一行都送给callback函数进行处理。


5,reverse()函数,将数组倒序
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.reverse();
console.log(stu[0].score);
6,array.sort()函数。该函数传入一个callback,很相似java的排序
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
var bySocre = function(a, b){return b.score - a.score;
}
stu.sort(bySocre);
var print_callback = function(item, number, array){console.log(item.score);
}
stu.forEach(print_callback);

备注:

a,假设callback里返回false。则a排在b的前面。

假设return的是b - a,则是从大到小排,反之是从小到大排。

b,sort直接改变了原数组。
c,假设callback不传,则依照unicode码自小到大排序:
var names = ["yanzi", "gg", "ww"];
names.sort();
var print_callback = function(item, number, array){console.log(item);
}
names.forEach(print_callback);

7,array.push()
在已有数组末尾后面加元素。能够加多个。
8,array.unshift()
在数组的開始位置加入元素。
演示样例代码:
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.push({id:4, score:100});
stu.unshift({id:5, score:99});
var print_callback = function(item, number, array){console.log(item.id);
}
stu.forEach(print_callback);
9,array.shift() 返回第一个元素,同一时候在原数组里删除第一个元素。
10,array.pop() 返回最后一个元素。同一时候在原数组里删除最后一个元素。
11,array.splice(a, b, C)须要传入三个參数,各自是从位置a開始,删除b个元素,然后插入元素C。C能够是多个
演示样例代码:
var stu = [{id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.splice(1,1,{id : 5, score:100});
var print_callback = function(item, number, array){console.log(item.id);
}
stu.forEach(print_callback);

备注:假设splice第三个參数不传入,则仅仅删除。假设第二个參数传0。则仅仅插入,不删除。


总结:reverse,sort, push, unshift, shift, pop, splice都有一个共同特点,都改变了原来的数组。
12,array.slice(start, end)从索引start到end-1拷贝出来一份返回。

假设end參数不传。则截取到最后一个位置。

13,array.concat(a, b):将数组a和数组b连接到一起。
14,array.join(a)对array每一个元素用a拼接起来。假设什么都不传。默认用。号进行切割。

15。array.map()需传入一个回调,回调须要return,默认将return的东西push到一个新的array.
var scores = [80, 75, 90];

var addScore = function(item, index, array){return item + 5;
}
var scoresNew = scores.map(addScore);
var print_callback = function(item, number, array){console.log(item);
}
scoresNew.forEach(print_callback);
16,array.reduce()
须要一个callback作为參数,callback(preResult, item, index, array),看一个求和的样例.
var scores = [80, 75, 90];

var sum = function(preresult, item, number, array){return preresult + item;
}
var sum2 = scores.reduce(sum, 0);
console.log(sum2);
总结:slice, concat, join, map, reduce不会改动原数组。

网易前端微专业,JavaScript程序设计基础篇:数组相关推荐

  1. 网易前端微专业课程讨论区问答精选

    Javascript程序设计部分 注:以下内容大部分来自网易云课堂<前端微专业>课程讨论区,下问内容较多,可打开标题下方的[目录]索引,便于定位查看. arguments.callee() ...

  2. 网易前端微专业,JavaScript程序设计:JS调试

    本节主要通过一个加法器,介绍JS如何调试.先上代码: test.html: <!DOCTYPE html> <html lang="en"> <hea ...

  3. 网易云课堂前端微专业各部分作业解答

    买了云课堂的前端微专业课程,在这里记录下解题的过程,一来防止自己偷懒,二来希望朋友们看到能提提意见,共同进步. 主要放大题自己写的答案,有些会提提思路,代码基本都在在线代码平台上. 注:除注明作者外, ...

  4. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  5. 程序设计基础——c语言篇,C语言程序设计基础篇.ppt

    C语言程序设计基础篇 C 语言程序设计-基础篇 第 2 章 数据类型和输入输出 2.1 数据类型 著名计算机科学家沃思提出: 程序=数据结构+算法 例如:学生各科成绩及总分排队问题. 成绩存放 –– ...

  6. 《JAVA 语言程序设计基础篇》chapter 5 方法

    <JAVA 语言程序设计基础篇>chapter 5 方法 依然是先回顾一下上一章的内容 主要是关于循环语句 这里做一个有关于蒙特卡罗模拟有关的练习 先是一段背景介绍 蒙特卡罗方法通过抓住事 ...

  7. java程序设计基础篇_java程序设计基础篇 复习笔记 第一单元

    java语言程序设计基础篇笔记 1. 几种有名的语言 COBOL:商业应用 FORTRAN:数学运算 BASIC:易学易用 Visual Basic,Delphi:图形用户界面 C:汇编语言的强大功能 ...

  8. 网易运营微专业 目录

    之前在网易工作的过程中,有一段时间的工作是要将我这个刚出生的"娃娃"带出来面见大众,可是因为"娃娃"是一个比较小众的产品,推广和运用起来还是有些困难,后期也了解 ...

  9. java语言读后感_《Java语言程序设计基础篇》读后感锦集

    <Java语言程序设计基础篇>是一本由梁著作,机械工业出版社出版的平装图书,本书定价:58.00元,页数:500,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助. <Jav ...

最新文章

  1. VMware Workstation 10装Mac OS X 10.9
  2. 我用AI回怼美女汽车销售系列[yolo车牌识别](二)
  3. php分享二十四:数组
  4. 基于弹性计算的AI推理
  5. Linux部署项目的步骤
  6. 论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio Geoffrey Hinton) 精典
  7. 重新分区_电脑磁盘分区指南!一分钟就学会
  8. Android FlashLight教程
  9. HTTP1.1之后的长连接和WebSocket的长连接之间的区别
  10. 网吧无盘服务器主机 系统,一个网吧无盘系统的安装步骤(新手教程)
  11. 【Git】Git提交代码详细步骤
  12. Navicat安装与破解
  13. 我只写注释 —— 让Ai写代码
  14. 预测(评价)模型——层次分析法*
  15. 数据库系列之MySQL表ibd文件删除恢复
  16. (一)基于Django的人脸识别在线考试系统
  17. Zabbix内网监控外网阿里云主机
  18. win10更新时强制关机会如何
  19. splunk篇5-导出csv文件中文乱码
  20. cf 1144G 贪心

热门文章

  1. eclipse查看git地址_使用Git进行版本控制
  2. 使用nginx实现一个主机部署多域名指向不同docker项目
  3. 第一阶段冲刺 第二天
  4. Swift开发:NSLayoutConstraint纯代码实现自动布局-初级篇
  5. 后台如何通过Request取得多个含有相同name的控件的值?
  6. 本人的博客只是工作期间随手记录的笔记而已,所以不会很详尽,由此给您带来的不便,恳请多多包涵~...
  7. struts2标签处理下拉列表
  8. js读取本地excel文档数据
  9. SQL 时间默认值设置问题
  10. 一维傅里叶变换后的复数怎样理解?