Dry Realm

Get busy living

Category

  • DevOps
  • Javascript
  • Review
  • 一些技巧
  • 其它
  • 学习过程中的所感所想
  • 拼命学习
  • 那些年的所见所闻
  • 随笔

Tags

  • Node.js
  • MongoDB
  • HTTP
  • linux
  • es6
  • express
  • 运维
  • typescript
  • docker
  • 面试总结
  • 正则表达式
  • javascript
  • vscode
  • 大黑猫
  • 新博客框架
  • 西安
  • 3rd-lib
  • 南京
  • 文字
  • new life
  • 子网掩码
  • Git
  • 数据库连接
  • 第三方库
  • 网络
  • linux指令
  • jenkins pipeline
  • webpack
  • k8s
  • eslint
  • 负数
  • 数学
  • devcontainer
  • Css
  • 本地版博客
  • 数据库
  • ntzyz大佬
  • git
  • MySQL
  • ECMA
  • review
  • Gitlab Api
  • 离别
  • 下载youtube
  • docker swarm
  • 年度总结
  • wsl2
  • 语句

Recent replies

  • xzdry 发表于「使用ffmpeg和youtube-dl下载youtube视频」

友链

ntzyz double

我

真诚
很看重自己在乎的人
希望能越来越好
爱蛋蛋
标签:javascript

es6

2019 年 11 月 8 日分类:Javascript#javascript#es6

Symbol

Reflect

数组

Array.from和sort()方法

参见:Array.from
Array.prototype.sort()

Array.from()

此方法从一个类似数组或可迭代(iterable)对象中创建一个新的,浅拷贝的数组。

这个方法有三个参数,第一个是必须的类数组(或可迭代)对象arrayLike,剩余两个分别是mapFn(回调函数)和thisArg(执行回调mapFn时的this)

这里的第二个参数mapFn回调函数相当于Array.from(arrayLike)后在执行一次map方法,即等价于Array.from(obj).map(mapFn,thisArg),除非创建的不是可用的中间数组。

from()的length属性为1,即Array.from.length===1。 Array.from()可以通过两种方式来创建对象:

  • 伪数组对象(拥有一个length属性和若干索引属性的任意对象,如下方栗子5中第二个)
  • 可迭代对象(可以获取对象中的元素,如Map和Set等) 一些栗子:
/** 1.Array from a String */
Array.from('foo') //['f','o','o']

/** 2.Array from a Set    */
Array.from(new Set(['foo',window]))    // ['foo',window]

/** 3.Array from a Map    */
Array.from(new Map([1,2],[2,4],[4,8])) // [[1, 2], [2, 4], [4, 8]]

/** 4.Array from an Array-like object (arguments)    */
function f(){return Array.from(arguments)};
f(1,2,3);   //[1,2,3]

/** 5.在Array.from中使用箭头函数 */
Array.from([1,2,3],x=>x+x)        //  Array [2, 4, 6]
Array.from({length:5},(v,i)=>i);  //[0,1,2,3,4]

这个方法的去重的例子参见常用函数中的数组函数中的例子1。

Array.prototype.sort()

sort()对数组元素进行排序,并返回数组(数组已原地排序,并且不进行复制)。默认排序是将元素转换为字符串,然后比较它们的UFT-16代码单元值序列。 这个函数接收一个可选的函数作为参数。如果省略,元素按照转换为字符串的各个字符的Unicode位点进行排序。 栗子:

//  1. 未指明compareFunction
[1,30,100000].sort();   // [1,100000,30]   由于没有指定比较函数,所以会将number转为字符串然后比较Unicode
//  2. 指明compareFunction
[1,30,100000].sort((a,b)=>a-b);  // [1,30,100000]

对于compareFunction:

  • compareFunction(a,b),小于0,排序结果:a,b
  • compareFunction(a,b),等于0,a,b位置不变
  • compareFunction(a,b),大于0,排序结果:b,a 结果是从小到大升序排序,如果想降序把a,b交换传入 这个两个函数一起的例子参见常用函数002

in

参见:in

参数可以是一个字符串或者symbol类型的属性名或者数组索引。

  • 如果是数组索引index,会查找数组里是否有这个索引。感觉没有太多用处
  • 如果是字符串,会查找对象或者其原型链里是否包含该字符串命名的对象,比如:
const trees=new Array('bay');
0 in trees // true
'bay' in trees //false
Symbol.iterator in trees // true 数组可迭代,是其__proto__上的一个属性

const mycar={make:'Honda'};
'make' in mycar //true
'Honda' in mycar //false

in的右边必须是一个对象。比如:

const c1=new String('green');
const c2="coral";
'length' in c1; // true
'length' in c2; // false
  • «
  • 1
  • »
Copyright © 2016-2018 ntzyz. All rights reversed.
Except where otherwise noted, content on this blog is licensed under CC-BY 2.0.