数组常用方法

数组常用方法

裁剪数组:slice()

slice()方法用数组的某个片段切出新的数组

语法:slice(a)从a开始到最后剪切

​ slice(a,b)从a开始到b结束

数组转换为字符串:

  • toString() 把数组转换为逗号分割的字符串
  • join() 可以规定分隔符(默认为逗号)

排序:sort()

sort() :是按照每个字符的unicode码进行排序

let arr = [2,5,3,1,4,5]
arr.sort(function(a,b){
    return a-b
}) // 升序

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPtVnZuM-1589886114338)(C:\Users\LY\AppData\Roaming\Typora\typora-user-images\image-20200519172728039.png)]

清空数组:

length

let arr = [1,2,4]
arr.length=0
console.log(arr); // []

将数组转化为字符串

  1. toString()

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

    结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保在这里插入图片描述存下来直接上传(img-UKjAdZ5O-1589886114344)(C:\Users\LY\AppData\Roaming\Typora\typora-user-images\image-20200519173919261.png)]

  2. join()可以设置分隔符

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    console.log(fruits.join("*")); 
    

增删改查

  1. push 添加到最后

    var arr=['香蕉','apple','orange','pear','papagan']
    arr.push('车厘子')
    
  2. pop 删除最后的值

    var arr=['香蕉','apple','orange','pear','papagan']
    arr.pop()
    
  3. unshift 添加到第一位

    var arr=['香蕉','apple','orange','pear','papagan']
    arr.unshift('荔枝')
    
  4. shift 删除第一位

    var arr=['香蕉','apple','orange','pear','papagan']
    arr.shift()
    
  5. splice() 兼备删除、替换、添加功能

    //删除 splice(start起始下标,deleteCount?可选值 删除个数)
    var arr=['banana','apple','orange','pear','panda']
    arr.splice(2,2);
    
    // 替换 splice(start起始下标,deleteCount删除个数,新的值)
    var arr=['香蕉','apple','orange','pear','papagan']
    arr.splice(1,3,'葡萄')
    
    // 新增 splice(start起始下标,deleteCount删除个数为0,新的值)
    var arr=['香蕉','apple','orange','pear','papagan']
    arr.splice(1,0,[1,2,3])
    
  6. delete 删除数组 只清空值,保留位置

    var arr=['香蕉','apple','orange','pear','papagan']
    delete arr[0]
    console.log(arr.length) // 5
    

合并数组

concat() 方法通过合并(连接)现有数组来创建一个新数组,但是不会更改当前数组 返回值是一个新的数组

var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var parent=["Tom","Tony"];
var myChildren = myGirls.concat(myBoys,parent);   // 连接 myGirls 和 myBoys
console.log(myChildren); // ["Cecilie", "Lone","Emil", "Tobias", "Linus","Tom","Tony"]

数组的迭代

  1. Array.forEach() 无返回值

    let num = [45, 4, 9, 16, 25]
        num.forEach((value,index,array)=>{  //value-值,index-键,array-数组本身
            console.log(value,index,array)
        })
    
  2. Array.map()通过对每个数组元素执行函数来创建新数组 不会对没有值的数组元素执行函数 不会更改原始数组。

    let num = [45, 4, 9, 16, 25]
        let num2 = num.map((value,index,array)=>{
            return value * 2;
        })
        console.log(num)
        console.log(num2)
    
  3. Array.filter()创建一个包含通过测试的数组元素的新数组(返回一个满足条件的新数组)

    let num = [45, 4, 9, 16, 25]
        let over18 = num.filter((value,index,array)=>{
            return value > 18
        })
        console.log(over18)
        console.log(num)
    
  4. Array.reduce()在每个数组元素上运行函数,以生成(减少它)单个值。在数组中从左到右工作。不会减少原始数组。

    let num = [45, 4, 9, 16, 25]
        let sum = num.reduce((total,value)=>{
            console.log(total)
            return total - value;
        })
        console.log(sum)  //每一项相加
    
  5. Array.reduceRight() 从右往左 不能接受初始值

    let num = [45, 4, 9, 16, 25]
        let sum = num.reduceRight((total,value)=>{
            console.log(total)
            return total + value;
        })
        console.log(sum)  //每一项相加
    
  6. Array.every()判断所有数组值是否通过测试。返回布尔值

    let num = [45, 4, 9, 16, 25]
        let allover18 = num.every(value=>{
            return value > 18
        })
        console.log(allover18)
    
  7. Array.some()检查某些数组值是否通过了测试。返回布尔值(有一个满足返回true)

    let num = [45, 4, 9, 16, 25]
        let someover18=num.some(value=>{
            return value > 18
        })
        console.log(someover18)
    
  8. Array.indexOf()方法在数组中搜索元素值并返回其位置。没有返回 -1

    let fruits = ["Apple", "Orange", "Apple", "Mango"];
        let a=fruits.indexOf('Apple')
        console.log(a)
        let b=fruits.indexOf('123')
        console.log(b)
    
  9. Array.lastIndexOf() 从数组结尾开始搜索。

    let fruits = ["Apple", "Orange", "Apple", "Mango"];
        let a=fruits.indexOf('Apple')
        console.log(a)
    
  10. Array.find()返回通过测试函数的第一个数组元素的值。

    let num = [45, 4, 9, 16, 25]
        let first = num.find(value=>{
            return value > 18
        })
        console.log(first)
    
  11. Array.findIndex()返回通过测试函数的第一个数组元素的位置。

    let num = [45, 4, 9, 16, 25]
        let first = num.findIndex(value=>{
            return value > 18
        })
        console.log(first)
    

ES6

  1. 扩展运算符 … 将任何含有Iterator 接口的对象转为 用逗号分隔的参数序列
var arr=[1,2,4,3,22,222,9,5];
console.log([...arr]); // 拷贝数组
  1. 合并数组
const arr1 = ['a', 'b'];
const arr2 = ['c'];
const arr3 = ['d', 'e'];
console.log([...arr1, ...arr2, ...arr3]);
  1. find查找 用于找到第一个符合条件的数组成员,如果没有符合成员,则返回undefined
let arr=[1,2,3,4,5,6,7];
let now=arr.find(function(val){
    return val>=5;
})
console.log(now);
  1. includes方法返回一个布尔值,表示某个数组是否包含给定的值
[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true
  1. fill 将数组中的指定位置,填充指定值
let arr=[1,2,3,4,5,6,7];
console.log(arr.fill(0));   //不指定位置,则将所有的位置,填充为指定值

console.log(arr.fill(0,3,6));    //第二个,第三个参数则是用于指定填充起始位置和结束位置
  1. entries keys values 遍历数组
let arr=[1,2,3,4];

 for(let index of arr.keys()){ // 键
     console.log(index);
     
 
 for(let val of arr.values()){ // 值
           console.log(val);
   }

 console.log(arr.entries());
     
 for(let[index,val] of arr.entries()){ // 键值对
        console.log(index,val);
        
  } 
  1. 数组拉平flat
let arr=[1,2,3,[4,[5,6,[7,8]]]];
console.log(arr.flat(Infinity))     //默认拉平一层,参数为拉平的层数,将所有的拉平Infinity
  1. Array.from
    用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
  1. Array.of
    用于将一组值,转换为数组。
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1
  1. fill()
    使用给定值,填充一个数组。
['a', 'b', 'c'].fill(7)
// [7, 7, 7]

new Array(3).fill(7)
// [7, 7, 7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值