JavaScript 学习笔记——基础篇(3)--数组
数组:存储一组数据
数组的创建:
- 通过构造函数创建:
var myarry = new Array() ;//创建一个空数组
注意:Array() 传参可以为多类型,若参数只有一个数值型数值n,则表示设置数组长度length=n;
- 浏览器封装
var myarry = []; //创建一个空数组
数组的访问:
- 通过下标索引访问 myarry[索引号]
- for 循环访问(首选) 返回索引号为数值型
- for ... in 循环访问 返回索引号为字符型
- forEach()遍历数组且无返回值
//forEach()遍历数组且无返回值 arryobj.forEach( function(形参1,形参2,形参3){形参1 //数组中的元素;形参2 // 数组元素对应下标;形参3 //原数组}) ;
- var newarry = arryobj.map(function(形参1,形参2,形参3){
形参1 //数组中的元素;
形参2 // 数组元素对应下标;
形参3 //原数组
return item}) ; 具有数组形式的返回值 映射遍历数组
- arry.reduce(function( val , item ,i , list ){
- val 初始值 当参数2省略时,初始值是下标为0的值; 当参数2设置时,val是参数2的值
- item 当前元素值;
- i 当前值的下标;
- list 原数组;
- },参数2)
- 过滤内容:filter( function ( item , i , list ){过滤条件;}) 返回值:满足过滤条件的新数组。
var myarry = [1,2.3,1.2,3.1,3];// for(var i=0;i<myarry.length;i++){// console.log(myarry[i]);// }// for(var i in myarry){// console.log(myarry[i]);// }myarry.forEach(function(i,v,list){console.log(i);console.log(v);console.log(list);})
数组对象方法:
- 删除最后一个元素: pop(); 返回值为删除的最后一个元素。
- 删除数组的第一个元素:shift(); 返回删除的元素。
- 向数组尾部添加元素 :push(添加元素1,元素2,,,,); 返回添加元素后新数组的长度。
- 向数组头部添加元素:unshift(添加元素1,元素2,,,,);返回添加元素后新数组的长度。
- 添加/删除元素 : splice(开始索引号,删除个数量,添加的新项目); 返回值 ——>删除元素组成的数组【】
- 排序:sort() 无参时默认按照unicode 编码顺序排序;传参时,需传入匿名函数function(a,b){return a-b;}升序 ; function(a,b){return b-a;}降序 。
var myarry = [1,2.3,1.2,3.1,3];myarry.sort();console.log(myarry); //[1, 1.2, 2.3, 3, 3.1]// 升序myarry.sort(function(a,b){return a-b;});console.log(myarry); //[1, 1.2, 2.3, 3, 3.1]//降序myarry.sort(function(a,b){return b-a;});console.log(myarry); //[3.1, 3, 2.3, 1.2, 1]
- 倒置: reverse() 数组元素倒序 返回新数组
- join(分隔符) 把数组内的元素拼接成一个字符串,根据分隔符进行连接,不传入分隔符默认按照 , 进行连接 ,返回值 ——> 字符串
- concat() 字符串 数组连接
- slice(开始,结束) 开始参数 必须要小于等于 结束参数 字符串数组均可使用
数组数据去重的三种方法:
//方法一:借助空数组 //思想原理:1.创建一个空数组// 2.遍历查找原数组内的元素 是否在 新数组内存在,若不存在将该元素加入新数 组内// 3.遍历结束,新数组为没有重复元素的元素组副本; function noreapt(arr){var newarry = [];for(var i = 0; i < arr.length; i++){if(newarry.indexOf(arr[i]) == -1) //新数组内查找不到该元素{newarry.push(arr[i]); //将元素添加入新数组}}return newarry;}var arry = [1,1,2.1,12,3,3,32.1,2];var a = noreapt(arry); //调用console.log(a); //[1, 2.1, 12, 3, 32.1, 2]//方法二:重复元素进行数组元素删除操作for(var i = 0;i<arry.length;i++){for(var j = i+1 ;j<arry.length;j++){if(arry[i] == arry[j]){arry.splice(j,1); //删除相同的数组元素,后面的元素下标一次减一j--; //j也相应减一,}}}//方法三:借助过滤方法filter() arry.filter(function(item,i){var a = arry.indexOf(item);return a === i; //返回满足 元素第一出现的位置和下标位置相同的元素,即后面重复出现的不返回; });
两组数组过滤出满足双方关键字的选项
// 过滤得到匹配keys数组的新数组 注:findIndex方法 获取数组中第一个值满足条件的索引Array.prototype.filterByKey = function (keys, keyName = 'id') {return keys && keys.length? this.filter(item => keys.findIndex(key => key == item[keyName]) !== -1): []}
JavaScript 学习笔记——基础篇(3)--数组相关推荐
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- JavaScript学习笔记(六)--数组
数组初始化 我们都知道,数组是用于保存多个值的集合,在数组中,值被称为元素,值可以是任意的数据类型.在Javascript中,创建数组通常有两种方式:字面量和构造函数. 字面量 数组的元素可以是任意的 ...
- JavaScript学习笔记(三)——数组
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- extlink.php,ExtJs 学习笔记基础篇 Ext组件的使用_extjs
昨天刚接触到Extjs,简单写了篇学习笔记,今天继续. 天介绍一下Ext中组件举几个简单的例子做说明.注意:文章内容有些摘自本人学习过程中看到的资料. Ext2.0对框架进行了非常大的重构,其中最重要 ...
- C++ 学习笔记----基础篇
(一)类和抽象数据类型 1.通过类实现的接口(公有和私有)可实现信息隐藏.实现对数据的封装等: 2.抽象数据类型(ADT:Abstract Data Type):当一个数据类型仅暴露公有接口,而将 ...
- java学习笔记-基础篇
Java基础篇 1-12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28-31异常 1-12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
- 易语言学习笔记——基础篇
易语言学习笔记20180710 一. 易语言的数据类型可以分为基本数据类型和特殊数据类型 1. 其中基本数据类型分为: ① 数值型 ② 逻辑型 ③ 日期时间型 ④ 文本型 ⑤ ...
最新文章
- 简明Linux命令行笔记:dmesg
- 水凝胶 静电纺丝_吉林大学:静电纺丝与水凝胶制备技术结合构建高强度光控智能水凝胶驱动器...
- 什么是StackOverflowError?
- 在CentOS下安装WebBench进行web 性能测试
- 《研磨设计模式》chap16 模板方法模式
- Intel Realsense D435 python 从深度相机realsense生成pcl点云
- async function_理解 Iterator, Generator 和 Async/Await
- nand ubi -1 nand基础
- Asp.net2.0工具包AjaxControlToolkit下载和安装
- 利用Maven逆向工程生成mybatis映射文件
- 【项目合作】移动端人体姿态估计
- 解决SVN汉化不成功问题,下载历史版本
- 什么是老毛子固件 padavan中文叫什么
- AV1代码学习:av1_encode_strategy、denoise_and_encode、av1_encode函数
- Java实现百度贴吧自动签到器
- Qt中文编程遇C2001错误,提示“常量中有换行符”
- Ext Gwt 实用例子--类似meebo的聊天界面
- 理解CTP/XTP柜台对接
- 电脑alt+tap切换屏幕卡顿解决
- securecrt能输入命令吗?