AI智能
改变未来

js数组

文章目录

  • 1.特点
  • 2.创建数组
  • 1.数组字面量
  • 2.构造函数
  • 3.访问数组元素
  • 4.检测数组
    • 创建类数组对象:
  • 5.将数组转换为字符串
    • toString():
    • join(\”-\”):
  • 6.队栈方法
    • 栈方法:
    • pop():只可以删最后一个
    • push():在最后添加一个元素
  • 队列方法:
    • shift():
    • unshift():
  • 7.排序方法
    • reverse():
    • sort():
    • 1. 排序
    • 2.回调函数
  • 8 操作方法(非静态方法)
    • concat():
    • slice():
    • splice:
    • indexOf(key,index):
    • lastIndexOf():
  • 9迭代方法(非静态方法)
    • every():
    • some():
    • map():通过对每个数组元素执行函数来创建新数组。
    • filter():
    • forEach():
    • reduce():
    • 回调函数参数:

    1.特点

    数组的长度可以动态修改(length )数组中的元素可以使用任意数据类型length可以返回当前数组长度,也可以设置数组长度

    2.创建数组

    1.数组字面量

    var arr=[null,undefined,true,0,function(){},{}];var arr=[]//创建空数组

    2.构造函数

    1.var arr=new Array();//调用array构造函数  空数组2.var arr=new Array(10);//数组长度为10创建一个数组,并且数组长度为103.var arr=new Array(\"hello\",20,true);//数组元素为hello 20 ture创建一个以参数为数组项的数组

    3.访问数组元素

    数组下标:从0开始[1,2,3,4]{0:1,1:2,2:3}arr[3]://访问arr数组中的第4个数据arr.length=10;将数组长度设置为10,如果原数组长度小于10,相当于将原数组的长度扩展到10的长度;如果原数组的数组长度大于10,相当于删除数组元素,直到数组长度为10arr[10]=\'hello\';将原数组的长度扩展到11 然后将第十一个赋值hello
    例子var arr=new Array();arr[10]=\"hello\";  //把第十一个数设置为helloconsole.log(arr);//(11) [empty × 10, \"hello\"]var arr1=new Array(10);var arr2=new Array(\"hello\");var arr3=new Array(null,10,true);console.log(arr3.length);//3console.log(arr.length=5);5arr3.length=2;//把arr3长度设置为2console.log(\"arr3:\",arr3);//2console.log(arr);//(5) [empty × 5]console.log(typeof arr);//objectconsole.log(arr1);//(10) [empty × 10]console.log(arr2);//helloconsole.log(arr3);   //(2) [null, 10]

    4.检测数组

    Array.isArray():返回当前参数是否为array类型es6:Array.from():将类数组转换为数组

    创建类数组对象:

    1.包含length属性2.属性名必须为number类型或者字符串number0:\"0\"Array.of(10,\"hello\") 创建数组 [10, \"hello\"]
    例子var arr=[];var o={}var a=\"hello\";console.log(typeof arr);//objectconsole.log(typeof o);//objectconsole.log(typeof a);//stringconsole.log(Array.isArray(arr));//ture    arr是不是数组类型console.log(Array.isArray(o));//falseconsole.log(Array.isArray(a));//falseconsole.log(Array.of(10));//[10]  设置长度为一 第一个数为十的数组console.log(Array.of(10,null,false));//(3) [10, null, false]function say(){console.log(arguments);//Arguments(2) [false, 20, callee: ƒ, Symbol(Symbol.iterator): ƒ]var result=Array.from(arguments);//将类数组对象转化为数组console.log(result);//(2) [false, 20]console.log(Array.isArray(result));//true}say(false,20);var obj={\"0\":10,\"1\":null,\"2\":false,\"length\":3}var result=Array.from(obj);//将类数组对象转化为数组console.log(result); //(3) [10, null, false]console.log(Array.isArray(result));//turefunction say(){console.log(arguments);//Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ]var result=Array.from(arguments);console.log(result);//[]console.log(Array.isArray(result));//ture}say()instanceofconsole.log(arr instanceof Object)//ture

    5.将数组转换为字符串

    toString():
    arr->Array.prototype:toString(){}var arr=[];arr.toString();
    join(\”-\”):
    将数组元素使用分隔符进行连接之后转换为字符串
    例子var arr=[4,5,6,7];console.log(arr.join(\"-\"));//4-5-6-7   转换为字符串类型console.log(typeof(arr.join(\"-\")));//stringvar result=arr.toString();//转换为字符串console.log(result);//4,5,6,7console.log(typeof result);//string

    6.队栈方法

    删除或者添加数组元素

    栈方法:

    pop():只可以删最后一个

    参数:无返回值:删除的元素

    push():在最后添加一个元素

    参数:想要添加的元素返回值:新数组的长度
    例子var arr=[1,2,3,\"hello\",null];console.log(arr);//(5) [1, 2, 3, \"hello\", null]var result=arr.pop();//删除最后一个数组// var result=arr.push({},false);console.log(result);//返回值为删除的元素console.log(arr);//(4) [1, 2, 3, \"hello\"]  现在已经删除最后一个数了

    队列方法:

    shift():

    参数:无返回值:删除的元素  删除第一个元素

    unshift():

    参数:添加的数组元素返回值:新数组长度
    例子var arr=[null,false,10];console.log(arr);//(3) [null, false, 10]// var result=arr.unshift(\"hello\",true);//在前面添加\'hello,ture\'var result=arr.shift();console.log(result);    //nullconsole.log(arr);//(2) [false, 10]

    7.排序方法

    reverse():

    反转参数:无返回值:反转之后的数组在原数组的基础上进行反转
    例子var arr=[1,2,3,4];console.log(arr);//(4) [1, 2, 3, 4]var result=arr.reverse();//将arr 反转console.log(result);//(4) [4, 3, 2, 1]console.log(arr==result);//ture

    sort():

    1. 排序

    参数:(修改原数组)1.无默认调用每一个数组元素的tostring()进行比较

    2.回调函数

    function(a,b){if(a>b){return 1;//a排在b之后}else if(a<b){return -1;//a排在b前面}else{return 0;//不排序}}例子var arr=[1,3,2,11,23,32];console.log(arr);//(6) [1, 3, 2, 11, 23, 32]var result=arr.sort(function(a,b){//	console.log(a);//	console.log(b);if(a>b){return -1}else if(a<b){return 1}else{return 0}});console.log(result);//(6) [32, 23, 11, 3, 2, 1]例子:var arr=[{name:\'b\',age:20,sarlary:1000},{name:\'a\',age:26,sarlary:1500},{name:\'f\',age:12,sarlary:800},{name:\'c\',age:30,sarlary:5000}];var result=arr.sort(handler(\"sarlary\"));function handler(key){//key=agereturn function(a,b){var c=a[key];var d=b[key];if(c>d){return 1}else{return -1}}}//console.log(arr);console.log(result);灵活排序:function sum(key){}

    8 操作方法(非静态方法)

    concat():

    数组拼接任意想要拼接的内容当作参数给concat拼接结果为新数组`
    例子var arr=[1,2,3];var arr1=[4,5,6];var arr2=[\"hello\",null,true];var result=arr.concat([arr1]);//在arr后面加//[arr1](4) [1, 2, 3, Array(3)]console.log(result);console.log(arr1==result);console.log(arr==result);var result=arr.concat(\"hello\",false);//在arr 后面加 “hello”,false

    slice():

    数组切割不改变原数组参数:0: 返回值为一个没有切割的新数组1: index从当前位置开始切割,到数组末尾结束2:begin end从begin开始切割,到end结束,不包含结束位置-1代表数组中的最后一个元素
    例子var arr=[1,2,3,4,5,6,7,8,9];var result=arr.slice(2,-1);//从第二个数后 到最后一个数console.log(result);//[3 4 5 6 7 8 9]console.log(arr==result);//false

    splice:

    返回值原数组数组切割修改原数组参数:0:返回一个空数组1:index从当前位置切割到数组末尾2:begin num从begin开始切割,切割num个3:begin num 插入的元素num=0: 插入num不等于0: 替换
    例子var arr=[1,2,3,4,5,6,7,8,9];var result=arr.splice(2,3,\"hello\",false,10);//在2到3间加hello false 10// var result=arr.splice(1,3);//从标号为1的开始切3个console.log(arr);//[1, 5, 6, 7, 8, 9]console.log(result);// [2, 3, 4]console.log(arr==result);//false

    indexOf(key,index):

    查找数组元素使用全等操作符进行比较返回值:找到了返回下标(从前向后查找一个)找不到返回-1

    lastIndexOf():

    查找数组元素从后向前查找`
    例子var arr=[1,2,true,\"hello\",21,2,1,2];//var result=arr.indexOf(2,2);var result=arr.lastIndexOf(2);console.log(result);//7

    9迭代方法(非静态方法)

    every():

    当数组中的每一个数组项满足条件时,返回true
    例子//这个例子检查所有数组值是否大于 18:var numbers = [45, 4, 9, 16, 25];var allOver18 = numbers.every(myFunction);function myFunction(value, index, array) {return value > 18;}

    some():

    只要有一个数组项满足条件,返回true例子  //这个例子检查某些数组值是否大于 18:var numbers = [45, 4, 9, 16, 25];var someOver18 = numbers.some(myFunction);function myFunction(value, index, array) {return value > 18;

    }

    map():通过对每个数组元素执行函数来创建新数组。

    对每一个数组元素进行操作map() 方法通过对每个数组元素执行函数来创建新数组。map() 方法不会对没有值的数组元素执行函数。map() 方法不会更改原始数组例子将每个数*2var numbers1 = [45, 4, 9, 16, 25];var numbers2 = numbers1.map(myFunction);function myFunction(value, index, array) {return value * 2;   //90,8,18,32,50}

    filter():

    过滤将满足条件的数组元素组成了一个新数组返回,原数组不变例子 //这个例子用值大于 18 的元素创建一个新数组:
    var numbers = [45, 4, 9, 16, 25];var over18 = numbers.filter(myFunction);function myFunction(value, index, array) {return value > 18;        //45  25}

    forEach():

    方法为每个数组元素调用一次函数(回调函数)。for(){}升级版没有返回值
    例子  //每个数都使用回调函数var txt = \"\";var numbers = [45, 4, 9, 16, 25];numbers.forEach(myFunction);function myFunction(value, index, array) {txt = txt + value + \"<br>\"; //45br4br9br16br25br}
    参数:回调函数 this回调函数参数:item index arr数组项 当前数组项下标 当前数组

    reduce():

    回调函数 this

    回调函数参数:

    pre   item index arr上一次当this不存在时,pre第一次为第一个item,从第二次开始为undefined当this值存在时,第一次pre为this,从第二次开始,为上一次回调函数的返回值reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。reduce() 方法在数组中从左到右工作。另请参见 reduceRight()。reduce() 方法不会减少原始数组。
    例子// 这个例子确定数组中所有数字的总和:var numbers1 = [45, 4, 9, 16, 25];var sum = numbers1.reduce(myFunction);function myFunction(total, value, index, array) {return total + value;}//总和是:99
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » js数组