一、数组:

1、js是弱语言,js中的数组定义时:不用指定数据类型、不用功指定数组长度;数组可以存储任何数据类型的数据

2、数组定义的[ ] 的实质:

[] = new Array();
{} = new Object();
// = new RegExp();

3、创建数组的语法:

var arr = [值1, 值2, 值3];
var arr = new Array(值1, 值2, 值3);
var arr = new Array(值1);//只有一个值时,其为数组的长度,赋值需要一个一个进行赋值,例如 arr[0] = 1; arr[1] = 2; ...

4、数组的数据类型----即对象(在js中,数组不需要定义时指定数据类型,它的类型就是对象)

5、for-in遍历:可以遍历一个对象的所有属性;也可以编译一个数组的所有元素

✿ 6、数组想要带有文本下标的元素,必须在创建数组之后

var arr = [1, 2, 3];
arr['pop'] = 'gun';
arr['good'] = 'cloth';

□ 在js中,文本下标的数组元素,不计入数组长度。【因为文本下标的元素是以属性形式添加到数组对象中的】

var arr = [1, 2, 3];
arr['pop'] = 'gun';
arr['good'] = 'cloth';
//取到数组下标为'pop'的元素:
document.write(arr['pop']);
document.write(arr.pop);

二、数组中的辅助函数和高级函数:

(1)辅助函数

push()      添加元素
pop() 删除元素
shift() 删除元素
unshift() 添加元素
splice() 可添加可删除元素
sort() 排序元素
reverse() 逆序元素

(2)高级函数

■ filter:过滤(通过回调函数拿到当前数组的每个元素)

遍历数组,对元素通过设定某种条件,不满足的元素过滤掉了,最终返回经过过滤的数组。

● 要求回调函数返回值是布尔值,为true时,当前的元素添加到内部数组中,为false则过滤掉。

// 1.filter函数的使用(让原数组中元素值小于10的被过滤掉)
let newNums = nums.filter(function (n) {
return n < 10
})

■ map:映射 (通过回调函数拿到当前数组的每个元素)

遍历数组,对元素设定某种处理条件(例如增删改查操作),最终返回经过处理的数组。

● 数组调用map函数,返回值是经过map函数的参数---回调函数处理过的新数组。

● 回调函数的参数(当前数组的元素)

//map函数的使用:(让原数组中的每个元素值翻倍)
let new2Nums = newNums.map(function (n) {
return n * 2
})

■ reduce:汇总(通过回调函数拿到当前数组的每个元素)

遍历数组,对元素进行“累加”,最终返回“累加结果”。

● 数组调用reduce函数(作用就是汇总,从初始值开始不断的“累加”),

所以一般数组调用reduce函数需要有两个参数【第一个是回调函数,第二个是初始值

● 回调函数(“累加器”--为了实现“累加”作用)往往也是需要两个参数的(+运算符的作用对象就是2个呀,例如1+2(+两边各有一个对象)哈哈哈):

第一个参数:preValue 前一次汇总后return的值, 第二个参数:n 当前元素


// 3.reduce函数的使用(对数组中所有的所有元素进行累加)
//new2Nums是一个数组
let total = new2Nums.reduce(function (preValue, n) {
return preValue + n
}, 0)
<div id="app">
<div>
总价格:{{total | getPrice}}
</div>
</div> <script>
let app = new Vue({
el: '#app',
data: {
books: [
{name: '算法导论1', date:'2018-1-1', price:100.5099, count:'1'},
{name: '算法导论2', date:'2018-1-1', price:100.9988, count:'1'},
{name: '算法导论3', date:'2018-1-1', price:100.98, count:'1'},
{name: '算法导论4', date:'2018-1-1', price:100.00, count:'1'},
]
},
computed: {
total(){
return this.books.reduce(function (preValue, n) {
return preValue + n.count * n.price;
}, 0);
}
},
filters: {
getPrice(price){
// return '¥' + parseFloat(price).toFixed(2) ;
return '¥' + price.toFixed(2) ;
}
}
</script>

学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)的更多相关文章

  1. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  2. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  3. 【EatBook】-NO.1.EatBook.1.JavaData.1.001-《JSON 必知必会-Introduction to JavaScript Object Notation》-

    1.0.0 Summary Tittle:[EatBook]-NO.1.EatBook.1.JavaData.1.001-<JSON 必知必会-Introduction to JavaScrip ...

  4. 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)

    不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...

  5. 《MySQL必知必会》学习笔记——前言

    前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...

  6. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  7. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

  8. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  9. mysql学习--mysql必知必会

      上图为数据库操作分类:     下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...

随机推荐

  1. HTTP强缓存和协商缓存

    一.浏览器缓存 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间.借助 HTTP 缓存,Web 站点变得更具有响应性. (一).缓存优点: 减少不必要的数据传输,节省带宽 减少服务器 ...

  2. Dubbo配置注册中心设置application的name使用驼峰命名法存在的隐藏项目启动异常问题

    原创/朱季谦 首先,先提一个建议,在SpringBoot+Dubbo项目中,Dubbo配置注册中心设置的application命名name的值,最好使用xxx-xxx-xxx这样格式的,避免随便使用驼 ...

  3. Chrome导出导入书签

    Chrome导出标签 Chrome导入书签

  4. 【LeetCode】1401. 圆和矩形是否有重叠 Circle and Rectangle Overlapping

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 利用公式 日期 题目地址:https://leetco ...

  5. 【LeetCode】186. Reverse Words in a String II 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 每个单词单独翻转+总的翻转 日期 题目地址:https ...

  6. 【九度OJ】题目1118:数制转换 解题报告

    [九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...

  7. 【LeetCode】934. Shortest Bridge 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS + BFS 相似题目 参考资料 日期 题目地 ...

  8. 【LeetCode】746. Min Cost Climbing Stairs 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  9. OpenCV 可自动调整参数的透视变换

    在shiter大牛的基础之上,对于他的程序做了一定的修改. 首先,通过两个循环使得霍夫变换两个参数:角度的分辨率和点个数的阈值可以变换,这样就不必对于每一张图像都手动的设置阈值.其次,过滤掉了两个距离 ...

  10. HTML5 纯CSS3实现正方体旋转3D效果

    实现效果: 实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...