<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
</div>
<script>
//Array的静态方法
//将伪数组转为数组 Array.from(伪数组)
// let lis = document.getElementsByTagName('li') //伪数组
// console.log(lis)
// lis.forEach(function(item,index){
// console.log(item,index)
// });//不是数组没有这个方法
// let arr = Array.from(lis)
// console.log(arr)
// arr.forEach(function(item,index){
// console.log(item,index)
// });
//Array.of(数字,数字) 将一组数字转化为数组
// let arr1 = Array.of(1,2,3,4)
// console.log(arr1)
// let arr2 = Array.of(1)
// console.log(arr2)
// 静态方法实例是不能调用的
// let lis = document.getElementsByTagName('li') //伪数组
// let arr1 = [1,2,3,4]
// arr1.from(lis) //arr1.from is not a function
// 原型上的方法即实例方法需要使用数组实例去调用
// {
// let arr = [1,2,3,4,5,6,7,8]
// //0 表示从arr数组小标为0的位置上开始被替换
// //至于有几个值被替换,取决于后面的的两个参数
// //4 表示找到arr中下标为4的值,作为要替换的内容的开头
// //6 表示找到arr中下标为6的值,最终替换的时候,就是拿下标为4~下标为6的内容(包含头不包含尾),替换下标从0开始的值
// arr.copyWithin(0,4,6)
// console.log(arr) //[5,6,3,4,5,6,7,8]
// }
// {
// let arr = [1,2,3,4,5,6,7,8]
//如果不传第三个参数:那么要替换的内容就是从下标3开始一直到结尾(包含尾)
// arr.copyWithin(0,3)
// console.log(arr) //[4, 5, 6, 7, 8, 6, 7, 8]
// }
// {
// let arr = [1,2,3,4,5,6,7,8]
// //如果不传第二、三参数:那么要替换的内容就是从下标0开始一直到结尾(包含尾),也就是和用来内容一样,但是替换了一遍
// arr.copyWithin(0)
// console.log(arr) [1,2,3,4,5,6,7,8]
// }
//fill填充数组
// let arr = []
// //如果使用一个空数组,这个数组中无法直接填充内容,需要定义长度
// arr.length = 8
// arr.fill('a')
// console.log(arr)
//keys(),values(),entries()
// let arr = ['a','b','c']
// console.log(arr.keys())//返回一个数组迭代器对象 Array Iterator {}
// console.log(arr.values())//返回一个数组迭代器对象 Array Iterator {}
// console.log(arr.entries())//返回一个数组迭代器对象 Array Iterator {}
// let arr = ['a','b','c']
// let keyIterator = arr.keys()
// let valuesIterator = arr.values()
// let entriesIterator = arr.entries()
// //如果要遍历迭代器对象要使用for of
// for (let key of keyIterator) {
// console.log(key) //遍历的是arr中的下标(键)
// }
// for (let value of valuesIterator) {
// console.log(value) //遍历的是arr中的值
// }
// for (let entries of entriesIterator) {
// console.log(entries) //遍历的是arr中的下标(键)和值
// }
// //find和findIndex
// let arr = ['a','b','c','d','e']
// //返回指定元素
// let res = arr.find(function(item, index){
// console.log(item,index) //a,b,c
// //当返回的结果是true时,后面就不会再遍历了,就将当前的item返回
// return item === 'c'
// })
// console.log(res) //c
// let arr = [{name:'zs'},{name:'ls'},{name:'ww'}]
// let res = arr.find(function(item, index){
// console.log(item,index) //{name: 'zs'} {name: 'ls'} {name: 'ww'}
// // 这里是不能这么判断的,因为对象比较时,两个对象的地址并不是同一个,所以是不相等的
// return item === {name:'ls'}
// // 应该这样写
// return item.name === 'ls'
// })
// console.log(res) //undefined
// findIndex()返回的是下标
// let arr = [{name:'zs'},{name:'ls'},{name:'ww'}]
// let res = arr.findIndex(function(item,index){
// return item.name === 'ls'
// })
// console.log(res)//1
//includes
// let arr1 = ['a']
// let arr2 = [1,2,3,4,arr1]
// console.log(arr2.includes(1)) //true
// console.log(arr1.includes('a'))//true
// console.log(arr1.includes(['a']))//false 因为是两个不同的数组,地址不一样
// console.log(arr2.includes(arr1))//true 这样就是true了
//flat()将多维数组转为一维数组
// {
// //二维数组
// let arr = [1,2,[3,4]]
// console.log(arr.flat())
// }
// {
// //多维数组,想拉平,可以传入参数,例如3维想变1维就需要把参数写成2
// let arr = [1,2,[3,4,[5,6,7]]]
// console.log(arr.flat(2))
// }
// {
// //如果不知道自己的数组有多少层,那么可以传入Infinity代表无穷大,直接变为1维
// let arr = [1,2,3[4,5[6,7[8,9[10,11]]]]]
// console.log(arr.flat(Infinity))
// }
//总结数组的常用方法:
// Array.prototype.forEach
// Array.prototype.map
// Array.prototype.reduce
// Array.prototype.every
// Array.prototype.some
// Array.prototype.filter
// Array.prototype.find
// Array.prototype.findIndex
// //静态方法
// Array.from() //把伪数组转为数组
// //合并数组
// [...arr1,...arr2]
// //复制数组
// let arr1 = [...arr2]
</script>
</body>
</html>
数组的新增方法
最新推荐文章于 2024-04-25 00:00:00 发布