1.js数组是什么?
1.1真实的数组
其实js不是典型的数组,是用对象来模拟的数组,真实的数据应该
- 元素的数据类型相同
- 使用连续的内存储存空间
-
通过数字下标获取元素
内存图
1.2js中的数组(对象模拟)
- 元素的数据类型可以不相同
- 内存不一定是相同的(可以随时存储)
- 不能通过数字下标,而是通过字符串
-
这意味数组可以有任意的key
内存图
举例说明
let arr =[1,2,3]
console.log(arr)//[1,2,3]
Object.keys(arr)//['0','1','2']
2.创建数组
2.1创建数组的常规方法
let arr =[1,2,3]
let arr=new Array(1,2,3)
let arr=new Array(3)//如果一个数字表示数组的长度
2.2字符串创建数组
let str ='1,2,3'
str.split(',')//用逗号来分开 ["1", "2", "3"]
let str ='123'
str.split('')//空字符串来隔开
2.3新语法创造数组
Array.from('123')// ["1", "2", "3"]
Array.from(123)//数字不能变成数组返回空
2.4如何判断是否是伪数组
举例
array={0:'a',1:'b',2:'c',3:'d',length:4}//从下文的截图我们可以看出没有数组的pop这些API
image.png
而如果把例子稍微变换我们就知道区别所在
Array.from({0:'a',1:'b',2:'c',3:'d',length:4})//有对象的属性
image.png
2.5数组结合
let arr=[1,2]
let arr1=[4,5]
arr.concat(arr1)//[1,2,4,5]
3.删除数组里面的元素
3.1用对象的方法来删除数组里面的元素(delete)
let arr=['a','b','c']
delete arr['0']//可以看到元素删除了 长度还是在的
image.png
3.2用shift() pop() splice()
let arr=[1,2,3,4,5,6]
arr.shift()//1第一个元素弹出来 长度不回保留
let arr=[1,2,3,4,5,6]
arr.pop()//6弹出最后一个元素 长度不会保留
let arr=[1,2,3,4,5,6]
arr.splice(1,2,99)//第一个表示删除第几个元素 第二个表示删除几个 后面是去添加
splice示例方法
4.查看数组里面的元素
4.1for循环
let arr=[1,2,3,4,5,6]
arr.x='x'
for(let i=0; i<arr.length; i=i+1){
console.log(`${i} : ${arr[i]}`)
}//从下面返回的答案我们可以看到这里面X没打印出来
4.2forEach 用法arr.forEach(function(xxx){ console.log(xxx)})
如何理解这个函数我们来写一个函数
function forEach(array,fn){
for(let i=0;i<array.length;i++)
fn(array[i],i)//第一个是当前的因素,第二个是数组的下标
}
console.log(forEach(['a','b','c'],function(){console.log('执行了一次')}))
console.log(forEach(['a','b','c'],function(x){console.log(x)}))
console.log(forEach(['a','b','c'],function(x,y){console.log(x,y)}))
5.如何查看元素在不在数组里面
let arr2 = [12,34,67,89];
arr2.indexOf(12)//返回0表示在数组里面,不在返回-1
6.如何在数组中增加元素
6.1尾部增加元素
let arr = [1,2,3,4,5,6,7,8]
arr.push(9)//
6.2头部增加元素
let arr = [1,2,3,4,5,6,7,8]
arr.unshift(9)
7.数组的元素调换顺序
let arr = [1,2,3,4,5,6,7,8]
arr.reverse()//[8, 7, 6, 5, 4, 3, 2, 1]
8.数组变换(map().filter().reduce())
8.1map(n变n)
一样变成一样举例说明一个数组都变成原来元素的两倍
let arr=[1,2,3,4,5,6]
console.log(arr.map(item=>item*item))// [1, 4, 9, 16, 25, 36]
8.2filter()(n 变少)
image.pnglet arr=[1,2,3,4,5,6]
arr.filter(item=>item%2===0)// [2, 4, 6]
8.3reduce()
image.png let arr=[1,2,3,4,5,6]
arr.reduce((sum,item)=> {return sum+item },0)//就是所有的数相加sum
框子里面相当于是sum,每次抢的东西相当于是item
image.png
以上就是创建对象的几种方法,大家可以对比一下用法,都需要掌握.
本文为本人的原创文章,著作权归本人和饥人谷所有,转载务必注明来源.
网友评论