JS数组基础
Posted 蜡笔小连
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数组基础相关的知识,希望对你有一定的参考价值。
定义
- 字面量:var arr=[];
- 构造函数:var arr=new Array();
任意数据类型,数组的长度可变可指定arr.length=6;
赋值
- 定义时赋值:
var arr=[100,200,...];
- 通过索引下标赋值:
arr[0]='hello';arr[3]='world';
var arr=new Array(10);//一个整型,新建指定长度的空数组
var arr=new Array(10.1);//error 不允许传递一个浮点型的数据
访问使用
[]访问法,索引下标的使用
length=max(index)+1 max-index=length-1
遍历
- for(var i=0;i<=strs.length;i++) {…} i下标
- while(i<=strs.length){…i++;}
- var i=0;do{…i++;}while(i<=strs.length);
- for(var i in strs){…} 自己进行迭代、判断结束
栈 队列
- 栈
push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
pop()从数组的末尾移除最后一项,减少数组的length值,返回移除的项 - 队列:
shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一。
unshift() 在数组的前端添加任意个项,并返回新数组的长度。
var arr=[];
arr.push(100,200);
arr.unshift('hello','world');
console.log(arr,arr.length);
//hello world 100 200 4
console.log(arr.pop());//200
console.log(arr.shift());//hello
console.log(arr,arr.length);//world 100 2
数据类型检测
- typeof 判断当前变量数据类型
var arr=[];
console.log(typeof arr);//object
- instanceof 当前变量是某个构造函数对应的原型链上的吗,小–>大
console.log(arr instanceof Array);//true
console.log(arr instanceof String);//false
console.log(arr instanceof Object);//true
- isPrototypeOf 当前变量是我的子孙后代吗 大–>小
console.log(Array.prototype.isPrototypeOf(arr));//true
console.log(Number.prototype.isPrototypeOf(arr));//false
- Array.isArray 是否为数组类型
console.log(Array.isArray(arr));//true
console.log(Array.isArray(new Array()));//true
console.log(Array.isArray('abc'));//false
console.log(Array.isArray(null));//false
数组中API函数功能总结
函数的名称 | 功能 | 传参 | 返回值 | 执行环境对象 |
---|---|---|---|---|
push() | 数组末尾添加元素 | 任意类型参数 | 新数组的长度 | 有影响 |
pop() | 删除数组末尾一个元素 | 无 | 移除的项 | 有影响 |
shift() | 删除数组开头的一个元素 | 无 | 移除的项 | 有影响 |
unshift() | 数组开头添加元素 | 任意类型任意多个 | 新数组的长度 | 有影响 |
splice() | 删除、新增、插入、替换 | 至少是两个参数,index_start(可正可负),count,新增的数据项s | 删除的数据项 | 有影响 |
sort() | 数组元素排序 | 默认排序无参,自定义排序参数为比较函数,比较函数有两个参数 | 排序后的数组 | 有影响 |
reverse() | 反转数组中的元素 | 无 | 反转后的数组 | 有影响 |
Array.isArray() | 判断是否为数组类型 | 当前变量 | ture/false | 没影响 |
join() | 数组序列化 | 可以是指定的分隔符 | 以指定分隔符分隔字符串的形式返回数组 | 没影响 |
toString() | 数组序列化 | 无 | 以逗号分隔字符串的形式返回数组 | 没影响 |
concat() | 数组的一层拼接 | 任意数据类型,任意多个 | 拼接后的新数组 | 没影响 |
slice() | 截取数组的一部分 | [index_start,index_end) | 截取的部分 | 没影响 |
indexOf(),lastIndexOf() | 查找数据项在数组中的索引下标 | 数据项,起始索引下标(默认不写=0) | 存在返回索引下标,不存在返回-1 | 没影响 |
every() | 对每一个数据项执行函数,都满足要求返回true,否则返回false | 函数作为参数Fcname(item,index,arr){return bool;} | true/false | 没影响 |
some() | 对每一个数据项执行函数,有一个满足要求的就返回true,所有的都不满足要求返回false | 函数作为参数Fcname(item,index,arr){return bool;} | true/false | 没影响 |
filter() | 对每一个数据项执行函数,满足要求的数据项保存起来,不满足要求的就不要 | 函数作为参数Fcname(item,index,arr){return bool;} | 满足要求的的数据项组成的数组 | 没影响 |
map() | 一 一映射:对每一个数据项执行函数的结果进行保存 | 函数作为参数Fcname(item,index,arr){return xx;} | 每次函数调用的结果组成的数组(映射之后的新数组) | 没影响 |
forEach() | 遍历 | 函数作为参数Fcname(value,index,arr){没有返回值} | 无返回值 | 没影响 |
以上是关于JS数组基础的主要内容,如果未能解决你的问题,请参考以下文章