数组属性和方法

发布时间 2023-12-20 21:07:04作者: 奇迹会出现

什么叫数组?
在 JavaScript 中,数组不是基本类型,而是具有以下核心特征的 Array 对象:

JavaScript 数组是可调整大小的,并且可以包含不同的数据类型。(当不需要这些特征时,可以使用类型化数组。)
JavaScript 数组不是关联数组,因此,不能使用任意字符串作为索引访问数组元素,但必须使用非负整数(或它们各自的字符串形式)作为索引访问。
JavaScript 数组的索引从 0 开始:数组的第一个元素在索引 0 处,第二个在索引 1 处,以此类推,最后一个元素是数组的 length 属性减去 1 的值。
JavaScript 数组复制操作创建浅拷贝。(所有 JavaScript 对象的标准内置复制操作都会创建浅拷贝,而不是深拷贝)。

声明(创建数组的方式)?
new Array()

属性?
length 设置或返回数组元素的个数。
prototype 允许你向数组对象添加属性或方法
constructor 返回创建数组对象的原型函数。

 

 

常用方法
Array.of()   创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型
Array.from()   类数组(概念?)转为数组
Array.find()   查询元素,返回数组中第一个通过测试的元素的值
Array.findIndex()   查询下标,方法返回数组中通过测试的第一个元素的索引
Array.indexOf()   返回某个指定的字符串值在字符串中首次出现的位置
Array.lastIndexOf()   返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索
Array.includes()   用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false

数组的复制填充方法
Array.copyWithin(target,start,end) 复制数组的一部分到该数组的其它位置,该方法会改变数组的内容,但是不会改变数组的长度
Array.fill(target,start,end)

1.当只有target参数时,会将从0索引开始复制,然后从当前位置粘贴序列

let arr1 = [1,2,3,4,5,6,7,8,9,10];
arr1.copyWithin(3);
console.log(arr1);
// 输出[1, 2, 3, 1, 2, 3, 4, 5, 6, 7]

2.当复制的序列在粘贴时超出了数组的长度,将会自动裁剪

let arr1 = [1,2,3,4,5,6,7,8,9,10];
arr1.copyWithin(20);
console.log(arr1);
// 输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

3.当target参数是一个负数的时候,会以target的绝对值为索引复制之前的序列,然后从末尾粘贴

let arr1 = [1,2,3,4,5,6,7,8,9,10];
arr1.copyWithin(-3);
console.log(arr1);
// 输出[1, 2, 3, 4, 5, 6, 7, 1, 2, 3]

 

参数start和参数end

start参数表示要复制元素的起点,以0为索引基点,如果没有start参数,copyWithin将会默认从0开始复制。
end参数表示要复制元素的终点,以0为索引基点,且当前如果没有end参数,copyWithin将会一直复制到数组的末尾。

let arr1 = [1,2,3,4,5,6,7,8,9,10];
arr1.copyWithin(3,4,7);
console.log(arr1);
// 输出[1, 2, 3, 5, 6, 7, 7, 8, 9, 10]

 

Array.push() 添加元素
Array.pop():删除并返回数组的最后一个元素
Array.push():向数组的结尾添加元素
Array.shift():将元素移除数组
Array.unshift():向数组头部添加元素
Array.join():将数组元素连接起来以构成一个字符串
Array.concat():连接数组
Array.reverse():将数组进行反转
Array.sort():将数组进行排序
Array.slice():返回数组的一部分
Array.splice():插入,删除或替换数组中的元素
Array.toString():将数组转换为一个字符串

 

Array.map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
Array.forEach():对数组中的每一项运行给定函数,这个方法没有返回值

 

Array.filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
Array.some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
Array.every():对数组中的每一项运行给定函数,如果该函数对每一项都返回ture,则返回true
Array.isArray():判断是否是数组

 

数组去重 以及数组对象如何去重?

 

//1-方法
            
            var arr = [1,8,9,1,2,3,6,5,5,4,7,7,2]
            
            arr1 = []
            for(var i = 0;i<arr.length;i++){
                if(arr1.indexOf(arr[i])=== -1){
                    arr1.push(arr[i])
                }
                console.log(arr1)
            }

 

 

 

数组排序

 

var arr = [4,3,2,1];
            
            for(m = 0;m<arr.length;m++){
            for(var i =0;i<arr.length-1;i++){
                if (arr[i] > arr[i+1]){
                    var temp = arr[i]
                    temp2 = arr[i+1]
                    arr[i+1] = temp
                    arr[i] = temp2
                }
                
            }
            console.log(arr);
            }