Array

作者: 车在路上爬fly | 来源:发表于2022-10-26 15:06 被阅读0次

    1.数组的定义

    var arr = ["Bill","Gates",33];
    arr[0] = Date.now();
    console.log(arr[0]);//[Number] 1629874326613
    console.log(arr.length); //数组长度  [Number] 3 
    arr.push('Mayun')  //向数组中添加元素
    arr.forEach(function(res){
       console.log("结果:" + res);  //遍历数组的结果:1629874326613  Gates 33 Mayun
    })
    console.log(arr instanceof Array); //[Boolean] true
    console.log(typeof arr); //object
    

    2. toString()

    把数组转换为数组值(逗号分隔)的字符串。

    var arr2 = ["Bill","Gates",33];
    console.log(arr2.toString());//Bill,Gates,33
    

    3.join()

    join() 方法也可将所有数组元素结合为一个字符串。

    console.log(arr2.join("-")); //Bill-Gates-33
    

    join() 类似 toString(),但是您还可以规定分隔符:


    4.pop()

    从数组中删除最后一个值,方法返回 “被删除的这个值”

    console.log(arr2.pop());//[Number] 33
    console.log(arr2); // [Object] ["Bill","Gates"]
    

    5.push()

    (在数组结尾处)向数组添加一个新的元素,并返回数组的长度。

    console.log(arr2.push("Mayun"));// [Number]  4
    console.log(arr2); //[Object] ["Bill","Gates",33,"Mayun"]
    

    6.shift()

    删除首个数组元素,并把所有其他元素“位移”到更低的索引,返回被“位移出”的字符串。

    console.log(arr2.shift()); //Bill
    console.log(arr2); //[Object] ["Gates",33,"Mayun"]
    

    7. unshift()

    在开头)向数组添加新元素,并“向后位移”旧元素:

    console.log(arr2.unshift("LiNing")); //[Number] 4
    console.log(arr2);  // [Object] ["LiNing","Gates",33,"Mayun"]
    

    8.splice()

    可用于向数组添加新项:splice() 方法返回一个包含已被删除项的数组:

    • 第一个参数(2)定义了应添加新元素的位置(拼接)。
    • 第二个参数(0)定义应删除多少元素。
    • 其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
    var arr3 = ["A","B","C","D"];
    console.log(arr3.splice(1,2,"Aki","Kimi")); //'["B","C"] '
    console.log(arr3);// '["A", "Aki", "Kimi", "D"]'
    

    您能够使用 splice() 在数组中不留“空洞(null,nudefind)”的情况下移除元素:

    onsole.log(arr3.splice(0,1));// 被删除的元素数组 ["A"] 
    console.log(arr3);  //删除后的数组 '["B","C","D"] '
    

    9.concat()

    合并(连接)现有数组来创建一个新数组:

    var arr3 = ["A","B","C","D"];
    var arr4 = ["1","2","3"];
    var arr5 = ["mike","kity"];
    var arr6 = ["Java","iOS"];
    //此方法可以拼接 1到无数多个数组
    var result = arr3.concat(arr4,arr5,arr6);
    console.log(result);  // '["A","B","C","D","1","2","3","mike","kity","Java","iOS"] '
    

    10.slice()

    从某个数组中切出新数组。

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    //从数组元素 1 ("Orange")开始切出一段数组:
    var citrus = fruits.slice(1);  // ' ["Orange","Lemon","Apple","Mango"]'
    

    slice() 方法创建新数组。它不会从源数组中删除任何元素。

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    //从数组元素 3 ("Apple")开始切出一段数组:
    var citrus = fruits.slice(3); //'["Apple","Mango"]'
    

    slice() 可接受两个参数,比如 (1, 3)。
    当给 slice() 方法赋予两个参数时,它从 start 参数中选择数组元素,直到(但不包括)end 参数:

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    var citrus = fruits.slice(1, 3);  //["Orange","Lemon"] 
    

    11.toString

    把数组转换为字符串

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    console.log(fruits.toString()); //Banana,Orange,Lemon,Apple,Mango
    

    12.sort()

    sort() 方法以字母顺序对数组进行排序:

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    console.log(fruits.sort()); // '["Apple","Banana","Lemon","Mango","Orange"] '
    

    13.reverse()

    reverse() 方法反转数组中的元素。(可以使用它以降序对数组进行排序:)

    var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    //对数组进行排序
    console.log(fruits.sort()); // '["Apple","Banana","Lemon","Mango","Orange"] '
    //将排序后的数组进行翻转
    console.log(fruits.reverse());// '["Orange","Mango","Lemon","Banana","Apple"]'
    

    14.数值排序 sort()

    如果数字按照字符串来排序,则 "25" 大于 "100",因为 "2" 大于 "1"。
    正因如此,sort()方法在对数值排序时会产生不正确的结果。

    • 可以通过一个比值函数来修正此问题:
    var points = [40, 100, 1, 5, 25, 10];
    console.log("数值排序" + points.sort()); // 错误 : 数值排序1,10,100,25,40,5
    //用比值函数做处理
    var newArr = points.sort(function(a, b) {
        return a - b;
    });
    console.log(newArr); //正确 [1,5,10,25,40,100]
    
    • 使用相同的技巧进行 降序 排序
    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return b - a});  //100,40,25,10,5,1
    

    15.获取数组最大值和最小值

    var points2 = [40, 100, 1, 5, 25, 10];          
    // 获取数组的最大值和最小值
    console.log(Math.max.apply(null,points2)); //100
    console.log(Math.min.apply(null,points2)); //1
    

    16.Array.forEach() 数组迭代

    forEach() 方法为每个数组元素调用一次函数(回调函数)。

    var points3 = [40, 100, 1, 5, 25, 10];
    points3.forEach(function(value,index){
        console.log("遍历的值:" + value);  
    })
    

    17.Array.map()

    map() 方法通过对每个数组元素执行函数来创建新数组。
    map() 方法不会对没有值的数组元素执行函数。
    map() 方法不会更改原始数组

    var points3 = [40, 100, 1, 5, 25, 10];
    var points33 = points3.map(function(value,index,arr){
        return value * 2;
    })
    console.log("得到的新数组:" + JSON.stringify(points33)); //得到的新数组:[80,200,2,10,50,20] 
    

    18.Array.filter()

    filter() 方法创建一个包含通过测试的数组元素的新数组

    var points3 = [40, 100, 1, 5, 25, 10];
    //这个例子用值大于 18 的元素创建一个新数组:
    var points33 = points3.filter(function(value,index,arr){
        return value > 18
    })
    console.log("过滤后的数组:" + JSON.stringify(points33));//得到的新数组:[40,100,25]
    

    19.Array.reduce()

    reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
    reduce() 方法在数组中从左到右工作。
    reduce() 方法不会减少原始数组。

    var points3 = [40, 100, 1, 5, 25, 10];
    var sum = points3.reduce(function(total,value,index,arr){
        return total + value
    })
    console.log("求和后的值:" + sum);  //求和后的值:181
    

    请注意此函数接受 4 个参数:(未用到的参数可以省略写)

    • 总数(初始值/先前返回的值)
    • 项目值
    • 项目索引
    • 数组本身

    reduce() 方法能够接受一个初始值:

    var points3 = [1,1,1,1,1];
    var sum = points3.reduce(function(total,value,index,arr){
        return total + value
    },5)
    console.log("求和后的值:" + sum); //求和后的值:10
    

    20.Array.reduceRight()

    reduceRight() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
    reduceRight() 方法在数组中从右到左工作。另请参阅 reduce()。
    reduceRight() 方法不会减少原始数组

    var numbers = [1,2,3,4,5];
    var sunm1 = numbers.reduceRight(function(total,value,index,arr){
        return total + value
    })
    console.log(sunm1); // 15
    

    reduce()/reduceRight()方法和 for/while 的不同: 前者性能比较好,耗时少,而for/while性能差耗时长


    21.Array.every()

    every() 方法检查数组所有的元素是否满足指定条件

    • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
    • 如果所有元素都满足条件,则返回 true。
    var testArr = [45, 4, 9, 16, 25];
    var allOver18 = testArr.every(function(value,index,arr){
        return value > 18
    })
    console.log(allOver18); //false
    

    \color{red}{注意:} every() 不会对空数组进行检测。不会改变原始数组。


    22.Array.some()

    检测数组中是否有元素大于 指定条件:

    some() 方法会依次执行数组的每个元素:

    • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
    • 如果没有满足条件的元素,则返回false。
    var testArr = [45, 4, 9, 16, 25];
    var allOver18 = testArr.some(function(value,index,arr){
        return value > 18
    })
    console.log(allOver18); //true
    

    \color{red}{注意:} some() 不会对空数组进行检测。不会改变原始数组。


    23.Array.indexOf()

    在数组中搜索元素值并返回其位置

    • 如果未找到项目,Array.indexOf() 返回 -1。
    • 如果项目多次出现,则返回第一次出现的位置。

    array.indexOf(item, start)

    • item 必需。要检索的项目。
    • start 可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。
    var fruitss = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruitss.indexOf("Apple");
    console.log("item位置是:" + a); //item位置是:0
    

    24.Array.lastIndexOf()

    从数组结尾开始搜索

    var fruitss = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruitss.lastIndexOf("Apple");
    console.log("item位置是:" + a); //item位置是:2
    

    25.Array.find()

    find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。

    var testArr = [45, 4, 9, 16, 25];
    var first = testArr.find(function(value,index,arr){
        return value > 46
    })
    console.log(first); //undefined
    
    • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
    • 如果没有符合条件的元素返回 undefined

    26.Array.findIndex()

    返回传入一个测试条件(函数)符合条件的数组第一个元素位置(索引、下标)。

    var testArr = [4, 45, 9, 16, 25];
    var first = testArr.findIndex(function(value,index,arr){
        return value > 18
    })
    console.log(first); // 1
    
    • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
    • 如果没有符合条件的元素返回 -1

    相关文章

      网友评论

          本文标题:Array

          本文链接:https://www.haomeiwen.com/subject/esasiltx.html