资讯专栏INFORMATION COLUMN

FE.ES-(for...of) 可迭代对象Range(n) in JS

miracledan / 1975人阅读

摘要:可迭代对象浏览器需支持注意返回一个实时的返回一个静态的语句在可迭代对象上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。与的区别语句以原始插入顺序迭代对象的可枚举属性。语句遍历可迭代对象定义要迭代的数据。

可迭代对象

Array [10, 20, 30]

String "boo"

TypedArrayc new Uint8Array([0x00, 0xff])

Map new Map([["a", 1], ["b", 2], ["c", 3]])

Set new Set([1, 1, 2, 2, 3, 3])

arguments (function() {for (let arg of arguments) console.log(arg)})(1, 2, 3)

Nodelist document.querySelectorAll("article > p")( 浏览器需支持 Nodelist [Symbol.iterator] )

[注意]
document.getElementById 返回一个实时的 NodeList
document.querySelectorAll 返回一个静态的 NodeList

for...of

for...of语句在可迭代对象上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。
for...of还可以迭代生成器,生成器不应该重用

for...of与for...in的区别

for...in 语句以原始插入顺序迭代对象的可枚举属性
for...of 语句遍历可迭代对象定义要迭代的数据。

Object.prototype.objCustom = function() {}
Array.prototype.arrCustom = function() {}
let iterable = [3, 5, 7]
iterable.foo = "hello"

for (let i in iterable){
  console.log(i) // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
  if (iterable.hasOwnProperty(i)) 
    console.log(i) // logs 0, 1, 2, "foo"
}
for (let i of iterable) 
  console.log(i) // logs 3, 5, 7
终止迭代

break,return throw
[注意] Array.forEach 不能 break

Range(n) in JS

https://stackoverflow.com/que...

Numbers

[...Array(5).keys()];
 => [0, 1, 2, 3, 4]

Character iteration

String.fromCharCode(
    ...[...Array("D".charCodeAt(0) - "A".charCodeAt(0) + 1).keys()]
    .map(i => i + "A".charCodeAt(0)));
 => "ABCD"

Iteration

for (const x of Array(5).keys()) {
  console.log(x, String.fromCharCode("A".charCodeAt(0) + x));
}
 => 0,"A" 1,"B" 2,"C" 3,"D" 4,"E"

As functions

function range(size, startAt = 0) {
    return [...Array(size).keys()].map(i => i + startAt);
}

function characterRange(startChar, endChar) {
    return String.fromCharCode(...range(endChar.charCodeAt(0) -
            startChar.charCodeAt(0), startChar.charCodeAt(0)))
}

As typed functions

function range(size:number, startAt:number = 0):ReadonlyArray {
    return [...Array(size).keys()].map(i => i + startAt);
}

function characterRange(startChar:string, endChar:string):ReadonlyArray {
    return String.fromCharCode(...range(endChar.charCodeAt(0) -
            startChar.charCodeAt(0), startChar.charCodeAt(0)))
}

lodash.js _.range() function

_.range(10);
 => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
_.range(1, 11);
 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_.range(0, 30, 5);
 => [0, 5, 10, 15, 20, 25]
_.range(0, -10, -1);
 => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
String.fromCharCode(..._.range("A".charCodeAt(0), "D".charCodeAt(0) + 1));
 => "ABCD"

Old non es6 browsers without a library:

Array.apply(null, Array(5)).map(function (_, i) {return i;});
 => [0, 1, 2, 3, 4]
console.log([...Array(5).keys()]);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102638.html

相关文章

  • ES6 Features系列:GeneratorFunction介绍

    摘要:没有显示显示显示关键字迭代器生成器用于马上退出代码块并保留现场,当执行迭代器的函数时,则能从退出点恢复现场并继续执行下去。迭代器迭代器是一个拥有方法和方法的对象,通过函数不断执行以关键字分割的代码段,通过函数令分割的代码段抛出异常。 一、前言                            第一次看koajs的示例时,发现该语句 function *(next){..........

    golden_hamster 评论0 收藏0
  • python基础教程:内置函数(一)

    摘要:我们把这些内置函数类型分成几类进行介绍。实参的合法范围是到进制表示是。产生一个将应用于迭代器中所有元素并返回结果的迭代器。内置的函数保证稳定。 Python解释器内置了很多函数和类型,可以随时随地在编程中使用。其实,我们在前面的学习中已经接触过好多内置函数。 showImg(https://segmentfault.com/img/remote/1460000019177948); 这...

    snifes 评论0 收藏0
  • Python 迭代器、生成器和列表解析

    摘要:迭代器迭代器在版本中被加入它为类序列对象提供了一个类序列的接口。其中方法返回迭代器对象本身方法返回容器的下一个元素,在结尾时引发异常。迭代器协议迭代器协议即实现与方法。 迭代器 迭代器在 Python 2.2 版本中被加入, 它为类序列对象提供了一个类序列的接口。 Python 的迭代无缝地支持序列对象, 而且它还允许迭代非序列类型, 包括用户定义的对象。即迭代器可以迭代不是序列但表现...

    dreamGong 评论0 收藏0
  • python迭代器与生成器小结

    摘要:迭代器要说生成器,必须首先说迭代器区分与讲到迭代器,就需要区别几个概念看着都差不多,其实不然。比如常见就是与分离实现的本身是可迭代对象,但不是迭代器,类似与但是又不同。 2016.3.10关于例子解释的补充更新 源自我的博客 例子 老规矩,先上一个代码: def add(s, x): return s + x def gen(): for i in range(...

    hellowoody 评论0 收藏0
  • [python] 关于 python 的一些高级特性

    摘要:开始本文主要记录廖大教程中高级特性这一节的内容,并写下我的一些理解。廖大的教程中是这样说的函数是顺序执行,遇到语句或者最后一行函数语句就返回。 前言 用 python 差不多半年多了,从去年暑假开始接触,从开始的懵逼,到写了一些小爬虫总算入门之后,许多作业也是能用 python 就用 python,基本抛弃了 C++。但是还是有些过于急躁了,能够写一些简短的代码,但是对于 python...

    Pines_Cheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<