[笔记]javascript数组拓展


1. 伪数组的特点:

  1.具有索引,非负的整数 

  2.一定要有长度

  3.不能使用数组的相关方法

2.伪数组的转换:

创建一个伪数组

let arrayLike = {

0:'ES5',

1:'ES6',

2:'ES7',

length:3

}

//ES5中伪数组的转换方法 Array.prototype.slice.call()

let arr1 = Array.prototype.slice.call(arrayLike);

console.log(arr1 instanceof Array)            //true

//ES6中伪数组的转换方法   Array.from()                

let arr2 = Array.from(arrayLike)

console.log(arr2 instanceof Array)            //true


3.构造数组:

当我们用new Array()重构数组时,如果我们只需要数组里有一个参数,那么传递一个参数,例:

let arr = new Array(3) // [empty × 3]  输出结果为长度为3的空数组 ,不符合我们的需求

console.log(arr)


而ES6中提供了一个新的方法,Array.of() :

例如我们同上面new Array()的例子一样只在Array.of()中传入一个参数:

let arr = Array.of(3)  

console.log(arr) // [3] 输出结果为符合我们需求的结果:


4.copyWithin(target, start, end) 用数组中的某些元素替换数组中的某些元素

/*copyWithin(target, start, end) 用数组中的某些元素替换数组中的某些元素,target为从数组的哪个位置开始替换,

start为可选,为从哪个位置开始截取,如不传,则从数组的开头截取

end为可选,为从哪个位置截取结束,如不传,则默认截取到数组结尾,*/

例1:

let arr = [1,2,3,4,5,6]

let arr1 = arr.copyWithin(1)

console.log(arr,arr1) //(6) [1, 1, 2, 3, 4, 5] (6) [1, 1, 2, 3, 4, 5]    


例2:

let arr = [1,2,3,4,5,6]

let arr1 = arr.copyWithin(1,3)

console.log(arr,arr1) //(6) [1, 4, 5, 6, 5, 6] (6) [1, 4, 5, 6, 5, 6]


例3:

let arr = [1,2,3,4,5,6]

let arr1 = arr.copyWithin(1,3,5)

console.log(arr1)// (6) [1, 4, 5, 4, 5, 6]


5.fill(ele,start,end)填充覆盖数组元素 ele为填充元素,start为替换开始位置,end为结束位置(不包含):

// 应用场景1: 创建一个制定长度的数组,数组里的元素均为指定元素:

let arr = new Array(3).fill(6)

console.log(arr) //[6,6,6]


//应用场景2:指定元素替换元素:

let arr =  [6, 6, 6];

let arr1 = arr.fill('jianShu',1,2)

console.log(arr1)   //(3) [6, "jianShu", 6]    


6.includes() ,检查数组中是否包含目标元素,并返回布尔值:

let arr = [1,2,3,4,5,6,NaN];

console.log(arr.includes(1))  // true

console.log(arr.includes(8))  // false

indexOf()和includes()的异同:

indexOf() 查找数组中是否包含目标元素,如果包含,返回目标元素的索引值,如果不包含,返回-1

includes()查找数组中是否包含目标元素,如果包含返回true,否则返回false

补充:includes()indexOf()检查NaN值时,includes()可检查出数组中是否存在NaN这个值,并返回true,而indexOf()会返回-1,无法检测

console.log(arr.indexOf(NaN))    //-1

console.log(arr.includes(NaN))    //true

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。