Array.form

把不是数组的东西变成数组。最常见的就是把伪数组变成数组

那么什么是伪数组
这就是伪数组,因为它不是继承自Array的原型的对象。它只是一个看起来很像数组的数组

只看下面的代码。a看起来很像数组,但是它又不是一个数组 生成的。所以它就是一个伪数组

伪数组就是拥有数组的下标和length。但是没有数据的任何api

例如我要在数组内添加一个新的内容 就会报错。

es5的方法,把伪数组变成数组

为什么要用Array.prototype.slice.call呢 ,因为js忘了给出Array方法方便的把伪数组转换成数组。所以只能用这个。

slice相当于下面的代码。创建一个真正的数组,循环伪数组,复制伪数组的每一项到真数组内。然后返回这个真数组。

es6用Array.from

api

把字符串变成数组,把Set变成数组。

下面选中的是一个伪数组。像数组的都有length

相当于前面没有定义 0到4这5项,直接给了个length为5

从一个没有任何下标的伪数组里,搞出一个长度为5的数组

每一项都是undefined,但是length是5

创建一个长度为n的数组,这是一个经典的面试题。如果不用Array.form应该怎么做?

使用new Array(5)这种方式,数组有bug。它没有任何的下标。
new Array(5)得到的是没有下标的数组。没有下标你就没法去map

用map循环每一项并加1返回,但是结果还是一个空的,相当于是没有做任何的操作。Map不会遍历不存在的下标。

如果用Array.form的形式


es5的方式创建有下标的长度为5的数组。

api内数组去重的方法。concat是链接两个数组,

let arr = [].concat.apply([], arguments);最前面是一个空的数组,连接一个arguments组成的数组, 最终返回的应该是一个arguments组成的数组副本

js中Array.apply(null,Array(3))与Array(3)的区别是什么?参考简书的地址: https://www.jianshu.com/p/6c7d0b18d4ca

请创建长度为n,但是每一项都是指定项的数组

用一个函数创建6个6

ES6的方式

ES5的方式

首先是创建一个有7个位置的数组,7个中间有6个空隙 所以会得到 6个6 

原理就是用空隙的东西来做。有点取巧

ES6简写的方式,一句话

Array.of

把你写的参数变成数组

得到了由你传的参数组成的数组

那么我为什么不直接这么写呢???

无聊的API

Array.prototype.Fill

prototype是原型,所以可以直接在数组的对象上使用fill方法

把传的值全部填充到数组。

所以上面的面试题,可以直接用fill填充就可以了。

从第一个开始填充3一直到数组的末尾,也就是从1开始把1改成了3,后面所有的都改成3

find

find必须接受一个函数。

查找某一项name等于a2的


也可以for循环来查找

find只找到一个,filter找到两个

findIndex

找对象的索引

copyWithin


在0的位置上放3和4之间的东西。就是把 1换成了4

把0的位置的换成,2个位置的值,从2开始到3结束。也就是把0的位置的a换成了c

entries

keys

也是得到的一个key的可迭代对象。
‘’

values

结束

ES6深入浅出-11 ES6新增的API(上)-2.Array新增API的更多相关文章

  1. ES6深入浅出-11 ES6新增的API(上)-1.Object.assign

    这些都是es6才有的 Object.assign 在a加上三个属性 分别是p1\p2\p3 以前是这么去加 b的三个属性p1.p2.p3就全部复制到a这个对象上了. 把后面的东西放到前面的东西上 两个 ...

  2. Core Web API上使用Swagger提供API文档

    在ASP.NET Core Web API上使用Swagger提供API文档   我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的AP ...

  3. ES6深入浅出-12 ES6新增的API(下)-1.录屏

    String.includes es5里面判断字符串是否存在的方法 search searcg的厉害之处是可以使用正则 match正则的方式 repeat -1遍,就不合法 startsWith 判断 ...

  4. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  5. ES6深入浅出-10 ES6新增的数据类型-2.Set与数组去重

    一种新的数据类型,它是对象的一种,Set,很像数组,又不是数组. Set 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refe ...

  6. ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性

    ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...

  7. ES6深入浅出-7 新版的类(上集)-1.介绍原型

    ES6新出的关键class BE受雇与网景开发了JS 当我们在写一个对象的时候,我们实际上内存的形式表示. obj等于一个空对象,可以直接toString.它为什么可以有toString window ...

  8. ES6深入浅出-7 新版的类(上集)-2.介绍JS中的类

    声明对象原型,公有属性. obj对象,它用一个属性__proto__记录了自己的原型 改掉它的原型为公有属性.那么obj这个对象及有了hi的方法.因为obj自己没有hi.那么就去自己的原型上去找了. ...

  9. ES6深入浅出-10 ES6新增的数据类型-3.其他类型

    Map类型 Map 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map Ma ...

随机推荐

  1. 《你们都是魔鬼吗》第八次团队作业:第四天Alpha冲刺

    <你们都是魔鬼吗>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 完成最 ...

  2. SVM: 使用kernels(核函数)的整个SVM算法过程

    将所有的样本都选做landmarks 一种方法是将所有的training data都做为landmarks,这样就会有m个landmarks(m个trainnign data),这样features就 ...

  3. Linux命令基础1-环境介绍

    1.linux的简单历史 1)先有unix,后来有linux 2)linux操作系统是开源和免费的,里面的软件可能部分要收费 3)linux有不同发行版本,redhat,centos等. 4)1991 ...

  4. Kubernetes 学习3 kubeadm初始化k8s集群

    一.k8s集群 1.k8s整体架构图 2.k8s网络架构图 二.基于kubeadm安装k8s步骤 1.master,nodes:安装kubelet,kubeadm,docker 2.master: k ...

  5. vue路由监听及路由守卫

    路由监听: //当一个组件被复用的时候,那么路由发生变化,但是页面上面的数据不会发生变化 新建one.vue 组件 作为home的子组件,在home.vue 中写遍历渲染页面 ,并用params传参, ...

  6. 桥接模式:探索JDBC底层实现

    一.目录概要 二.问题探究 需求:假设要设计一个电脑商场管理系统的某个模块设计,电脑分为品牌和类型两个纬度,我们应该怎么解决? 按照初学者的思路,利用继承就能简单粗暴的实现,那我们来看下这种思路的设计 ...

  7. noip考点整理(应该不是很完整……)

    部分来自百度百科.其他的博客 一.必须会的 1.暴力: DFS.BFS.灌水法搜索.回溯搜索.记忆化搜索.启发式搜索.最优性剪枝.可行性剪枝 2.贪心 3.模拟 4.骗分 二.基础算法 1.图论:SP ...

  8. (25)打鸡儿教你Vue.js

    vue-cli // 全局安装 vue-cli npm install --global vue-cli // 创建一个基于 webpack 模板的新项目 vue init webpack my-pr ...

  9. 代码还原,IDA中使用的宏

    在IDA7.0中的定义文件拷贝的. 如果想使用,直接去IDA的plugins插件目录下.包含它的 **defs.h"" 如下: /* This file contains defi ...

  10. wpf防止界面卡死

    AsyncInvokeHelper.CallbackInvoke(new Action(() => { System.Threading.Tasks.Task.Factory.StartNew( ...