学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)
一、数组:
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)的更多相关文章
- [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- 【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 ...
- 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)
不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...
- 《MySQL必知必会》学习笔记——前言
前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...
- 《SQL必知必会》学习笔记整理
简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...
- 《SQL必知必会》学习笔记(一)
这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...
- mysql学习--mysql必知必会1
例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...
- mysql学习--mysql必知必会
上图为数据库操作分类: 下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...
随机推荐
- 联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- Vlookup大叔与一对多查找(Excel函数集团)
所谓一对多查找,就是根据一个条件,把多个符合条件的结果全部找出来. 其实吧,一对多查找不是什么,尤其是O365的Filter函数横空出世震撼全场之后,简直就是瞬间把所有传统的数组解法甩出去七八十来条街 ...
- 十年后回到百年前?(Excel技巧集团)
在单元格里输入日期,有时可以偷懒,比如明年的日期可以输入至少一位的年+横杠(或斜杠)+至少一位的月+横杠(或斜杠)+至少一位的日,也就是"21-1-1",单元格里就会自动显示&qu ...
- 自动造数据利器,Faker 了解一下?
1. 背景 在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据.由于现在的业务系统数据多种多样,千变万化.在手动制造数据的 ...
- LuoguP2378 因式分解II 题解
Content 输入一个多项式 \(x^2+ax+b\)(不保证 \(a,b\neq0\)),请对这个多项式进行因式分解(形式为 \((x-x_1)(x-x_2)\),其中 \(x_1>x_2\ ...
- java 数据类型:枚举类enum、对比方法compreTo()、获取名字.name()、获取对应值的枚举类Enum.valueOf()、包含构造方法和抽象方法的enum;实现接口;
问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类 ...
- RPA培训:RPA的核心三个组件常见部署方式(RPA学习天地)
整体架构 目前主流厂商的RPA平台就是由控制台.设计器和机器人这三个标准套件组成,这三个核心套件形成了RPA产品的基本要素.其它如AI平台.人机交互.流程挖掘.自动化中心等都是衍生出来的周边产品. 1 ...
- 优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download
优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download TTFB全称Time To First Byte,是指网络请求被发起到从服务器接收到地 ...
- 【LeetCode】75. Sort Colors 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 计数排序 双指针 日期 题目地址:https://l ...
- 编写Java程序,通过给定可变参数方法,计算任意给定的多个int类型数据之和
返回本章节 返回作业目录 需求说明: 通过给定可变参数方法,计算任意给定的多个int类型数据之和. 实现思路: 定义可变形参方法,参数类型是int类型. 定义变量 sum 接受最终的和. 通过 for ...