猿站网:ES6 中那些被忽略的优雅方法

Array


1. find(value, index, arr)

在这类情形我须要推论两个字符串呢合乎许多方法论的前提

比如说须要推论[{id: 1}, {id: 2}, {id: 3}]中与否有所含合乎id=1的统计数据;

从前就要采用filter方式。

const array = [{id: 1, name: a}, {id: 2, name: b}, {id: 3, name: c}];
const isTrue = array.filter(obj => obj.id === 1).length;

不过在ES6中包涵了两个find方式, 事实上更典雅的读法如果是

constarray = [{id:1}, {id:2}, {id:3}];constisTrue = array.find(obj=>obj.id ===1);

find方式将会对字符串进行遍历,如果有合乎前提的统计数据将结束遍历并返回统计数据,没有的话返回undefined而不像filter完整的遍历完字符串。所以如果你只须要对统计数据进行bool推论或者拿两个统计数据时候, 建议采用find除了find还有两个方式是findIndex与find用法类似, 不过findIndex返回的是字符串成员的位置, 没有返回-1

这两种方式类似,看情形决定采用哪一种

2. from和[…obj]

Array.from 可以对类似字符串的对象转成字符串,比如说 DOM 中上传图片的input.files

事实上也可以采用[…]代替,而且更简洁。但是采用...必须对象实现了Iterator方式否则会报错。

采用场景: 从前如果上传多个文件须要显示所有文件的名字和进度的话,须要创建有两个存放相关统计数据的字符串

const array = [];
for (obj of input.files) { // for of 事实上也是对实现Iterator方式的对象遍历
  array.push(obj);
};
// from
const array = Array.from(input.files);
// ...
const array = [...input.files]; //cool
[...123] // [1, 2, 3];

3. fill();

如果我须要实现两个简单的桶算法的话, 比如说对范围在0-100的20个整数排序的话

我首先须要创建两个长度为101, 默认值为0的 字符串须要

const array = [];
for (let i = 0; i<101; i++) {
  array.push(0);
}

如果采用fill只须要

constarray =newArray(101).fill(0);

Array.fill(value)方式会对字符串填充字符串成员, 填充长度等于字符串长度

转自:http://www.jianshu.com/p/0f197e102b4f

建站知识

猿站网:css设置td th的内容超出宽度打点点

2022-5-22 0:41:31

建站知识

猿站网:ES6中使用Set结构求数组的并差交集

2022-5-22 0:51:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索