JS数组基础

Posted 蜡笔小连

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数组基础相关的知识,希望对你有一定的参考价值。

定义

  1. 字面量:var arr=[];
  2. 构造函数:var arr=new Array();

任意数据类型,数组的长度可变可指定arr.length=6;

赋值

  1. 定义时赋值:var arr=[100,200,...];
  2. 通过索引下标赋值: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
遍历

  1. for(var i=0;i<=strs.length;i++) {…} i下标
  2. while(i<=strs.length){…i++;}
  3. var i=0;do{…i++;}while(i<=strs.length);
  4. for(var i in strs){…} 自己进行迭代、判断结束

栈 队列


  1. push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
    pop()从数组的末尾移除最后一项,减少数组的length值,返回移除的项
  2. 队列:
    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

数据类型检测

  1. typeof 判断当前变量数据类型
var arr=[];
console.log(typeof arr);//object
  1. instanceof 当前变量是某个构造函数对应的原型链上的吗,小–>大
console.log(arr instanceof Array);//true
console.log(arr instanceof String);//false
console.log(arr instanceof Object);//true
  1. isPrototypeOf 当前变量是我的子孙后代吗 大–>小
console.log(Array.prototype.isPrototypeOf(arr));//true
console.log(Number.prototype.isPrototypeOf(arr));//false
  1. 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数组基础的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

JS常用代码片段-127个常用罗列-值得收藏

web代码片段

JS的数据类型判断函数数组对象结构处理日期转换函数,浏览器类型判断函数合集

javascript js数组找到片段

JavaScript笔试题(js高级代码片段)