JS其实没有真正的数组,只是用对象模拟数组
![5c697e9a8fa82fc005aca3adcac14fa4.png](https://i-blog.csdnimg.cn/blog_migrate/7a9f829bb0586d79c8e4aabc267043b7.jpeg)
创建一个数组
![f6eecb336af32087e962287559d353d5.png](https://i-blog.csdnimg.cn/blog_migrate/af08ead54750ddb2b360f4baf1a4d600.png)
Array.from可以将不是数组的尝试变成数组
![a89fcafe67ec8ec0d49e523c4602d36a.png](https://i-blog.csdnimg.cn/blog_migrate/574a1ba1614c528300b3cc9c3a8b2455.png)
只会在符合条件下才能转化成功:该对象有0,1,2,3这种下标和length属性
伪数组:如果一个数组的原型链中没有数组的共有属性 比如:array.push array.pop
![bc4a12c79d462fe8cff6d70590e6fdf3.png](https://i-blog.csdnimg.cn/blog_migrate/378afc2998b060777d8fea3f271750df.png)
![48f526c1f618b0a5867a80001905bd52.png](https://i-blog.csdnimg.cn/blog_migrate/978052c7fd61b147d82655695f538550.png)
cancat返回新的数组,原数组不发生变化
![d377225e4a675f927edc7f9c1134256c.png](https://i-blog.csdnimg.cn/blog_migrate/64e920cf815165835f81ba503aad0fca.png)
可用slice[0]来复制一个数组
![76a886abf721cfd4131d8872ce9dee05.png](https://i-blog.csdnimg.cn/blog_migrate/2983ad6c1f7d3018ffa8c645861c3010.png)
slice不会改变原数组
数组的增删改查
![946d52ace2847f7dd7316ed49636d439.png](https://i-blog.csdnimg.cn/blog_migrate/781a3a5c39117e8a0fc1f52111821176.jpeg)
![0e393873a929f9966271dbd2b0bc006c.png](https://i-blog.csdnimg.cn/blog_migrate/5478aa729b1570655ed139fec935519f.png)
![e77bb050104037da70328a1aecd5401c.png](https://i-blog.csdnimg.cn/blog_migrate/604e1614b96ef36110ae89452ab15097.png)
![b1f6c6431449cf9bfae0e8dc0c76c433.png](https://i-blog.csdnimg.cn/blog_migrate/e7d47a07a5499e088f26de367375ed3b.jpeg)
![572b0ff59ff7b3d55873c4ccdaa36165.png](https://i-blog.csdnimg.cn/blog_migrate/fcc47b81a11aa6f961ccb08d7846d672.png)
pop
![61ce0eb9fa163c3c610cda60857856da.png](https://i-blog.csdnimg.cn/blog_migrate/5546f792121422f964a4d7fc2beeb788.png)
splice(2,3)从下标为2的地方包括2,删除3个元素
![d7d2d374d0c4655e0e7779c5d0979d41.png](https://i-blog.csdnimg.cn/blog_migrate/48002743b12fc36aa60ebcbe4ef524cb.png)
查看元素
![eaf57066b44c7d8d65d5cc53404fb4fc.png](https://i-blog.csdnimg.cn/blog_migrate/67f776de7a12bcf560c208e2fa11d7d4.jpeg)
![8af2eb676a3a03107551ecb8264bcfb4.png](https://i-blog.csdnimg.cn/blog_migrate/ed9174654aa895dc6702cb2c4cbb3cb6.png)
![58edbe909581c383678972b0c9e48c42.png](https://i-blog.csdnimg.cn/blog_migrate/890cd810f60087bbd96218be535753c9.png)
对象的操作方法在数组这不靠谱,改用如下的办法
![fdfad7dc134c1190e88670478cc6ce3e.png](https://i-blog.csdnimg.cn/blog_migrate/c3074e6ab988fcca13c7299ee6029858.png)
forEach(),遍历这个数组,每次调用函数。第一个参数是当前元素,第二个参数是下标,第三个参数是数组本身
![8a55e78147194dd4143896ab4521f6b7.png](https://i-blog.csdnimg.cn/blog_migrate/1f47888eae74509290af54926cc58fe5.png)
![884227dbb6b8465ccd06569aa9eb949f.png](https://i-blog.csdnimg.cn/blog_migrate/fe9969dae2dfcbaae7804c8f6a86c6bc.png)
![f2c6de246afa8c1d19f69c246be6097e.png](https://i-blog.csdnimg.cn/blog_migrate/06c2db332023872e776c67f7b68a1d5d.png)
for循环有break和continue,forEach没有;for循环是关键字不是个函数,只有块级作用域,而forEach是函数有函数作用域
![f8ad6a341762dd8776e2e2eaff45b0ff.png](https://i-blog.csdnimg.cn/blog_migrate/9e6c477b28cde8a550a65bea72364b09.png)
![3f6161ebb8af5f192061d7f2f7318802.png](https://i-blog.csdnimg.cn/blog_migrate/c7792cc2fc17ff0907bc43ea0c9e3cd1.jpeg)
查看单个属性
读不到array.length
![58acdffd66119e473c7f773d30507eb7.png](https://i-blog.csdnimg.cn/blog_migrate/8e44e694716b4b2ac12ae4462aa7baf6.jpeg)
![bd7657cd4d9f9186665189c5be9fe9c6.png](https://i-blog.csdnimg.cn/blog_migrate/8f58e8bb1dbde4a2472143ff26d19f0d.png)
![4d05d854acdf2c54c3450fd17bb28ccd.png](https://i-blog.csdnimg.cn/blog_migrate/1f42f813518c47dc4e8a7583ae704c0b.jpeg)
![3c06c53cb337682f4585be0dd88c60b8.png](https://i-blog.csdnimg.cn/blog_migrate/e4d1c703c3f6eeead068ca1c34f5d79d.png)
![93ace097188cc02502d0b33ba8d990d7.png](https://i-blog.csdnimg.cn/blog_migrate/0e9906f09376a8c88a92a7efa26b4088.png)
find返回找到的第一个元素,不返回下标,findIndex返回下标
增加数组的元素
![2b24d43976e241a5da130e07e5d4bae1.png](https://i-blog.csdnimg.cn/blog_migrate/8633cf0095215babbddd34b6329ba03e.jpeg)
![a4bb1f1f0f2ee87b966507ff7448a1c5.png](https://i-blog.csdnimg.cn/blog_migrate/56184135afa4f4cc40b715230a4b3c55.png)
![08bf4527eed89fec2a4ef11324620783.png](https://i-blog.csdnimg.cn/blog_migrate/44108929af0fde351f8698e77ecda8a9.png)
修改数组中的元素
arr.revverse()//反转数组
修改了原来的数组
![f345faf34c49e63aed514afaee0b126f.png](https://i-blog.csdnimg.cn/blog_migrate/67be2b5d984483cabd3b61a21957ab74.png)
如何反转字符串?先分开,再倒转,再合并
![f8912c6d10d06bbf1884d958cd3dd640.png](https://i-blog.csdnimg.cn/blog_migrate/5bd897a8292b867907838739bf992337.png)
自定义排序
![97fbcbe4714752722875ca0db7765515.png](https://i-blog.csdnimg.cn/blog_migrate/a3f6b4d795566c6d0f46b64a4df9ab59.png)
![16cfe77b9801bebef02f76618c163fb7.png](https://i-blog.csdnimg.cn/blog_migrate/5287b619122d66acaec7591fe25c5084.png)
可简化为arr.sort((a,b) =>a.sort-b.sort)
数组变换
![e1a8937580ccd9e9d8b393024755f87e.png](https://i-blog.csdnimg.cn/blog_migrate/c8c934d013dc7c8b949e6a4c4fc9250f.png)
map:n变n,一一映射
![7f4c837f9a95029444653ab1762c0e51.png](https://i-blog.csdnimg.cn/blog_migrate/39b23a547c8e3c53908c4d156c17cd90.png)
filter:n变少
![01fdadc125981e96a1130bcdeaa3a723.png](https://i-blog.csdnimg.cn/blog_migrate/222f2e1534b1efe11792b4ec3a9eff5f.png)
reduce:n变1
![0a0d0d923e30490cbddc97125229591c.png](https://i-blog.csdnimg.cn/blog_migrate/fd99ef9e86ec4361bdd6f4034bbe18ca.png)
可用reduce简化,第二个参数为结果的初始值
arr.reduce((sum,item)=>{return sum+item},0)
map也可以用reduce实现
![11b93745021abf7b0f333e731d91c01e.png](https://i-blog.csdnimg.cn/blog_migrate/d77c61c927ad637c90c61ff7c25836d2.png)
filter也可以用reduce实现
![758cad46e354fcb2731e96e51602db47.png](https://i-blog.csdnimg.cn/blog_migrate/c6b1fec63db65a32f952bba9e0a8b03a.png)