博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Array 基础
阅读量:5345 次
发布时间:2019-06-15

本文共 2949 字,大约阅读时间需要 9 分钟。

前端小菜从今天开始记录js学习收获,记录内容来自红宝书

首先带来的是array的理解

  • array的定义
  • array的检测
  • array常用方法
    1. 栈方法
    2. 队列方法
    3. 排序
    4. 元素操作
    5. 位置查找
    6. 迭代方法
    7. 归并方法

array的定义

关于数组定义主要有两种方式:构造函数法和字面量法多数人钟情于后者,简单、粗暴

构造函数法

var arr =new Array();

当构造函数法 new Array(n),只有一个参数时,若参数为数字即生成一个length为n的数组,否则便生成只有 一个元素 n的数组

字面量法

var arr =[];

检测数组

Array.isArray()检测某个值是否为数组

接下来是对于数组的一些操作主要涉及到push、pop、shift、unshift、sort、reverse等方法

栈方法(后进先出)

js作为一个动态的脚本语言,可以通过自己的方式去模拟其他语言的功能,从而造就了它的强大

js通过push和pop来模拟了栈的行为

push在数组末尾添加元素,返回数组长度

var arr =['john'];

arr.push('jack'); //return 2
console.log(arr) //'john','jack'

pop实现从数组末尾移除最后一项

arr.pop() //return jack

队列方法(先进先出)

js通过shift和push可以模拟队列行为

push向数组末尾推入一个元素,shift从数组前端移除一个元素

shift移除数组中第一个元素,返回删除元素

var arr =['jack','john'];

var newArr = arr.shift(); //jack
console.log(arr) //john

与shift对应的还有unshift, unshift是向数组的前端插入任意项

arr.unshift(1,2,3)

console.log(arr) //1,2,3,'john'

排序

数组的排序方法有reversesort

reverse()方法是反转数组顺序

var arr =[1,2,3,4]

arr.reverse() // arr=>4,3,2,1

sort()实现函数排序功能(默认升序排列),在比较之前会调用每个元素的toString()方法,然后进行比较,所以排序结果会与我们的预期(升序或降序)有所出入

为了达到预期效果偶们需要给sort传递一个compare方法

function compare(value1,value2){        if(value1{            return -1;        }else if (value1>value2){            reutrn 1;        }else{            return 0;        }}

var arr =[1,4,2,6,5]

arr.sort(compare)
console.log(arr) //1,2,4,5,6

当然也有一个简化版比较函数(适应于数值类型和typeOf返回数值类型的对象类型)

function compare(value1,value2){

return value1 -value2; //升序
}

操作方法

concat()可以基础当前数组所有项创建一个新数组

var arr =[1,2,3];

var arr1 =arr.concat('jack','hello');

arr //1,2,3

arr1 //1,2,3,'john','hello'

slice()基于当前数组的一个或多个项创建一个新数组,slice()可以接受一个或两个参数,表示返回项的起始和结束位置

只有一个参数时返回指定位置开始到数组末尾的所有项,无参数时默认从0开始
两个参数时,返回起始位置到结束位置之间(不包含结束位置)的项

var arr =[1,2,3,4,5]

var arr1 =arr.slice() //1,2,3,4,5
arr.slice(1) //2,3,4,5
arr.silce(1,3) //2,3

splice()可以通过参数控制实现对数组的元素的直接(对原数组操作)删除,插入,替换

*删除--指定两个参数,第一项位置和要删除的项数,返回删除项

var arr =[1,2,3,4,5]

arr.splice(1,2) //2,3
arr //1,4,5

*插入--提供三个参数:起始位置,0(要删除个数),要插入项

var arr =[1,2,3,4,5]

arr.splice(1,0,'jack','john')
arr // 1,'jack','john',2,3,4,5

*替换-类似于对插入方法的扩展,只是把插入方法的第二个参数变成非零,即可实现插入的效果

位置方法(indexOf/lastIndexOf)

都接受两个参数:要查找的项和查找起点索引,当省略第二个参数即取默认值0,内部执行(全等)===操作,所以匹配项必须严格相等,查找不到目标元素返回-1,

var arr =[1,2,34,4,5,7]

arr.indexOf(34) //2
arr.indiexOf(34,3) //-1

迭代方法

:给定函数接受三个参数:元素值,索引,当前数组对象

every()对对数组每一元素运行给定函数,都为true则返回true
some()对数组每一元素执行给定函数,任一项返回true,则返回true
filter()对数组每一元素执行给定函数,返回给定函数返回true的值,组成的新数组
forEach()对数组每一元素执行给定函数,类似于for
*map()对数组每一元素运行给定函数,返回每次调用结果组成的数组

var arr =[1,2,3]

every()

var result =arr.every(function(item,index,array){

return item>1
})
result //false

filter()

var newArr = arr.filter(function(item,index,aarray){

return item>1
})
newArr //2,3

map()

var newArr =arr.map(function(ietm,index){

return item*2;
})
newArr //2,4,6

归并方法

reduce

reduceRight
两者区别在于从哪端开始遍历数组

reduce()接受四个参数:前一个值,当前值,索引数组对象

var arr=[1,2,3]

var newArr = arr.reduce(function(prev,cur,index,array){
retnrn prev + cur
});
newArr //6
函数的返回值会作为是一个参数(prev),传递给下一项

END...

转载于:https://www.cnblogs.com/V-JACK/p/5276816.html

你可能感兴趣的文章
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
线程安全问题
查看>>
linux的子进程调用exec( )系列函数
查看>>
MySQLdb & pymsql
查看>>