Javascript中的数组

数组的作用

 var arr = [23, 32, 4, 56, 176, 887, 9, 0, 54];

使用数组中的值 数组[下标] 或者 数组[索引]
数组.length表示数组的长度

for循环最最常用的用途就是循环数组

for (var i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

一,数组的方法(es5之前)

数组的方法指的是数组本身具备的一些功能性函数
可以实现一些不同的功能
数组的基本操作 头增、头删、尾增、尾删

1.头增方法 unshift

unshift头增的主要功能:向数组的头部增加1个或者多个成员 返回值是数组的长度 会改变原数组

var arr = ["4"];
var length = arr.unshift("aaaaa4", "4", "55", "66");
console.log(length)//5
console.log(arr)//(5) ["aaaaa4", "4", "55", "66", "4"]

2.头删方法 shift

它不需要参数 默认从数组的头部移除一项 会改变原数组 返回值是被移除的项

    var arr = [0,1,2,3,4,5]
    var arr1 = arr.shift()
    console.log(arr)//[1, 2, 3, 4, 5]
    console.log(arr1) //0

3.尾增方法push

push 的主要功能: 向数组的尾部增加一个或多个成员 返回值是数组的长度 会改变原数组

var length1 = arr.push(1, 2, 3);
console.log(length1);   

4.尾删方法pop

它不需要参数 默认从数组的尾部移除一项 会改变原数组 返回值是被移除的项

var result1 = arr.pop();  
console.log(result1);

5.concat 合并

不会改变原数组

var arr = [0,1,2,3,4,5]
var arr1 = arr.concat ("a,b,c",66)
console.log(arr)//[0, 1, 2, 3, 4, 5]
console.log(arr1)//[0, 1, 2, 3, 4, 5, "a,b,c", 66]

6.slice 截取

第一种用法:接收两个参数 第一个表示截取的开始 第二个表示截取的结束 不包含第二个位置的成员

var arr1 = arr.slice(-3, 7);

第二种用法: 接收1个参数 该参数表示截取的开始 默认截取到末尾 该参数也可以是负数

var arr2 = arr.slice(-5);

第三种用法: 不接受参数 表示整个数组都复制

var arr3 = arr.slice();

7.splice 操作

用于操作数组:增加、删除、替换
第一个参数表示操作位置 第二个参数表示删除几项数组成员 第三个参数包括往后的参数表示新增的成员
当只有第一个参数的时候 表示从该位置开始删除 删除到最后
不加参数,全部都删除

var arr = [1, 2, 3, 4, 5, 6, 7];
var arr1 = arr.splice(2, 2, 8, 9); // 把3和 4 删掉 替换为8 9
var arr1 = arr.splice(4); 

8.sort 排序

9.reverse 逆序


var arr = [4, 45, 456,2, 1, 12,  23, 123, 234];
arr.reverse();
console.log(arr);//[234, 123, 23, 12, 1, 2, 456, 45, 4]

10.indexOf 查找

该方法接收一个参数 返回该参数在数组中的下标顺序 如果找得到 就返回下标数字 如果找不到 则返回 -1,用全等

var arr = ["a", "b", "c", "小沈阳", "d"];
var idx = arr.indexOf("小沈阳");
var idx1 = arr.indexOf("小沈阳2");
console.log("小沈阳在数组中排名第" + idx);// 3
console.log("小沈阳2在数组中排名第" + idx1);// -1

11.join 转为字符串

join方法接收一个参数 表示间隔符号 返回值是以该间隔符号作为拼接符号组成的一个字符串 参数默认为","

12.toString 转为字符串 不需要参数

当作默认的join即可

二,数组的方法(es5新增)

所有的方法都分两种:静态方法、普通方法

静态方法:构造函数所具备的方法
var arr = new Array();
Array.xxx() 这就是一个静态方法
普通方法:数组、对象等对象具备的方法
arr.xxx() 这就是普通方法
ES5中增加的数组静态方法

1.Array.isArray(target)判断对象是不是数组

    var obj = {
        a: 1,
        b: {
            c: 1
        },
        d: {
            e: {
                f: {
                    
                }
            }
        }
    }

    var arr = [1, 2, 3, 4];

    function deepCopy(target) {
        // 定义一个变量
        var copyTarget = null;
        // 因为当前函数既能够要复制对象也要能够复制数组 所以先判定target是对象还是数组
        if (Array.isArray(target)) {
            copyTarget = [];
            for (var i = 0; i < target.length; i++) {
                if (typeof target[i] === "object" && target[i] != null) {
                    copyTarget[i] = deepCopy(target[i])
                } else {
                    copyTarget[i] = target[i];
                }
            }
        } else {
            copyTarget = {};
            for (var i in target) {
                if (typeof target[i] === "object" && target[i] != null) {
                    copyTarget[i] = deepCopy(target[i])
                } else {
                    copyTarget[i] = target[i];
                }
            }
        }
        return copyTarget
    }

在定义一个变量时,如果暂时无法确定类型 要给一个初始值
推荐的写法: 如果该变量 将来要存储的是数字 则初始化为0 如果是字符串 则初始化为空字符串 如果初始化为布尔值 则false 如果是引用类型 则null

2.,arr.forEach(),该方法是迭代器(循环)

接收一个函数作为参数 该函数有3个形参
函数会执行数组的长度次
第一个参数是数组的成员
第二个参数是数组的索引
第三个参数是数组本身

	var arr = ["a", "b", "c", "d"];
    arr.forEach(function(value, index, arr) {
        console.log(value, index, arr, this)
    }, {a: 1});

this返回的是{a: 1}这个对象

3.arr.map() 该方法是一个映射方法 会根据原数组生成一个新数组

  var arr = ["a", "b", "c", "d"];
    var arr1 = arr.map(function(value, index, arr) {
        return value + 1;
    });
    console.log(arr1);

4.arr.filter() 该方法用于过滤数组 会根据条件过滤

接收一个函数作为参数 如果该函数在执行的过程中返回真 则对应的元素会被过滤到一个新数组中

var arr = ["2019", "2020", "2021", "1999", "1978"];
// 将成员中带1的过滤出来 形成新数组
var arr1 = arr.filter(function(value) {
    return value.indexOf("1") != -1 ;
});
console.log(arr1);

5.arr.some()

断言方法 参数是函数 会根据函数的条件进行判定 函数也会执行多次 当函数的返回值为真 停止循环 并some返回真 如果循环结束都为假 some才返回假

var arr = [45, 67, 99, 444, 43, 567];
var bool = arr.some(function(value) {
    return value < 44;
});
console.log(bool)

6.arr.every() 断言方法

参数是函数 会根据函数的条件进行判定 函数也会执行多次 当函数的返回值为真 才会进行下一次循环 一旦函数返回值为假 停止循环 every的结果为false 函数的每一次结果都为真时 every的结果为true

   var arr = [45, 67, 99, 444, 43, 567]
   var bool = arr.every(function(value) {
       return typeof value === "number";
   })
   console.log(bool);
        

7.arr.fill() 填充方法

参数是3个值 第一个参数表示 要填充的成员 第二个参数表示填充的起始位置(默认值为0) 第三个参数表示填充的结束位置(默认值为数组的长度)

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.fill("good", 3, 7);
arr.fill("good", 3);
arr.fill(5);
//该方法会改变原数组

8.arr.reduce() 循环方法

参数是一个函数 函数有4个参数 1 上一次的函数返回值 2 成员 3 索引 4 原数组 循环次数为数组的长度-1次
reduce的返回值是 最后一次的函数返回值

   var arr = [45, 67, 99, 444, 43, 567];
   var result = arr.reduce(function(prev, value) {
       console.log(prev, value)
       return prev + value;
   });
   console.log(result);

9.arr.reduceRight()

与reduce的区别就是 reduce是从左向右循环 本方法是从右向左循环

   var arr = [45, 67, 99, 444, 43, 567];
   var result = arr.reduceRight(function(prev, value) {
       console.log(prev, value)
       return prev + value;
   });
   console.log(result);

三,数组的方法(es6新增)

数组在ES6中增加了3个普通方法

1.find

接收一个函数作为参数
该函数有3个形参
第一个是成员
第二个是下标
第三个是原数组
该函数返回值如果为真 则find方法返回对应的成员
如果循环结束 没有任何一个成员符合条件 则find方法返回undefined

let arr = ["东邪", "西毒", "南帝", "北丐", "中神通"];
let item = arr.find(function (value, index, arr) {
    return value.length === 4;
});

2.findIndex

与find使用方式一致 如果有符合条件的成员 则返回该成员的下标 如果没有 则返回 -1

let arr = ["东邪", "西毒", "南帝", "北丐", "中神通"];
let idx = arr.findIndex(function (value, index, arr) {
    return value.length === 2;
});
console.log(idx)

3.copyWithin

接收3个参数 第一个表示粘贴的开始位置 第二个表示复制的开始位置 第三个表示复制的结束位置(不包含该位置)
该函数的作用: 从第二个参数位置开始复制 复制到第三个参数位置 将复制的内容替换到第一个参数位置 并依次向后替换
该方法会改变原数组 但是不会改变原数组的长度

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.copyWithin(8, 1, 7)

4.静态方法Array.of 该方法用于创建数组

该方法用于创建数组
它解决了 new Array时 传递一个参数并且是数字时所产生的问题

let arr = new Array(4);
let arr1 = Array.of(4);
console.log(arr);
console.log(arr1);

5.Array.from 该方法用于将类数组对象(伪数组)

var obj = {
    0: 1,
    1: 2,
    2: 3,
    length: 3
}
let arr = Array.from(obj);
console.log(arr);
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值