6. JavaScript 基本的数据结构 -- 数组Array(2)

6. JavaScript 基本的数据结构 -- 数组Array(2),第1张

咱们书接上回数组Array(1),说完了数组创建于添加删除,该说说查找了

3.查找

        8.indexOf根据元素,将其索引返回:

let array = [1.5,2.5,3.5,4.5];

//index = 0;
let index = array.indexOf(1.5);

let array = [1.5,2.5,3.5,4.5,1.5];
//index = 4;
//第二个参数不是必须的,设定从第几个索引开始搜索
//现在array有两个1.5,但我设定从第1个索引而不是第0个开始搜索,所以返回做后的索引
let index = array.indexOf(1.5,1);

        lastIndexOf跟indexOf是相似的,只是从数组右边开始索引

        另一个值得注意的是,indexOf的参数仅对值引用有效例如:number

        但是如果是object,例如:{name:"name1"}在数组中,并用indexOf来查找此元素索引会返回-1,也就是无法找到。接下来我们介绍如何查找引用型元素

        9.find / findIndex 查找引用类型的元素:

//声明一个存入对象的数组
let objectList = [{prop:"pro1"},{prop:"pro2"}];

//查找数组中prop的值为‘pro1‘的对象
//find方法参数为一个匿名函数,函数第一个参数为数组中的元素变量,第二个为索引变量
//执行时会遍历数组,将数组中的元素和索引依次赋值给这俩个参数,并执行此匿名函数,若返回true则找到元//素并返回。
let findPro1 = objectList.find((element, index)=>{
        return element.prop === "pro1";
    });

        findIndex 与find类似,只不过它返回的不是元素本身,而是此元素的索引值。 可以看到我们开始运用回调函数,匿名函数,箭头函数等知识点,如果不太清楚JS函数的话可以先看看这里,有详细的解答。

4.遍历

        10.forEach(参数与find一样):

let array = [1,2,3];

//1 2 3
array.forEach((element,index)=>{console.log(element);});

        11.map:同样也是遍历数组,但与forEach不同的是,在遍历每个数组中的元素时它需要返回一个值,换句话说map在遍历数组时可以对数组中的元素进行修改并存进另一个数组中,不会对原有数组做任何改动,如下:

let array = [1,2,3];

//newArray = [2, 3, 4]
//array = [1,2,3]
let newArray = array.map((element,index)=>{return element + 1;});
5.其他一些数组方法       

        12.sort和reverse:值得注意的是sort是将数组中的元素转换成字符串在比对字符串的大小,按从小到大排列元素。所以我们最好自己定义排序逻辑,不然会有问题:

let array = [10,9.1,20];

//[10,20,9.1] 按字符串比大小,10中的1最小所以排第一位
console.log(array.sort());

//如果想从小到大排列则自定义回调函数,参数a,b为数组中一前一后元素,若a大于b返回1否则-1
array.sort((a,b)=>{return a>b?1:-1;})

        对于reverse函数便是逆序排列,但我很少用,因为只要把上边代码中sort函数的逻辑反过来做不就是reverse了吗。

        13.filter:从数组中筛选出符合条件的元素

let array = [10.1,11,12,3,6];

//result = [3,6]
//回调函数返回true/false,想留下元素则返回true
const result = array.filter((element,index)=>{return element < 10;});

        14.reduce:这个方法可以在遍历的时候帮助我们获取到前一个循环中执行完语句后的返回值

let array = [1,2,3,4];
let initialValue = 0;//因为第一个元素没有前一个元素,所以用initialValue代替

//求数组中元素之和
array.reduce((prevElement,currentElement,currentIndex)=>{
    return prevElement + currentElement;//返回值将赋值给下一个循环中的prevElement
},initialValue);

        15.split/join:数组与字符串之间的转换

let str = "Shanghai;1;large;over";

//array = ["Shanghai","1","large","over"];
let array = str.split(";");//split 是字符串的方法,数组是没有split方法的

//string = "Shanghai;1;large;over"
let string = array.join(";");

        16. "...":此符号可以帮助我们把数组中的所有元素拷贝出来 

let array = [1,2,3];

let newArray = [...array];//将array中的元素拷贝出来并放在newArray里

array.push(4);

//array = [1,2,3,4]
//newArray = [1,2,3]

//用法举例:当我们想获取数组中的最小元素时
Math.min(array)//出错,因为需要的是数字参数,而不是数组
Math.min(...array)//正确,可以理解为:Math.min(1,2,3)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/878014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存