JavaScript迭代程序
JavaScript Iterators
我在浏览MDN(Mozilla开发者网络)时遇到了迭代程序和生成器
很自然,我尝试了谷歌Chrome v21页面中给出的代码片段。具体来说,这个代码:
var it = Iterator(lang);
for (var pair in it)
print(pair); // prints each [key, value] pair in turn
但是,控制台返回以下错误消息:
ReferenceError: Iterator is not defined
为什么?Iterator函数是否被弃用?我是不是漏掉了一点?感谢您的帮助和时间:-)
数组有一个内置的映射函数,其作用类似于迭代器。
[1,2,3].map(function(input){console.log(input)});
标准输出:
1
2
3
最糟糕的情况是,你可以轻松地设计一个迭代器对象,但没有对此进行全面测试,但如果有任何错误,你应该能够快速地使其工作。
var Iterator = function(arr){ return {
index : -1,
hasNext : function(){ return this.index <= arr.length; },
hasPrevious: function(){ return this.index > 0; },
current: function(){ return arr[ this["index"] ]; },
next : function(){
if(this.hasNext()){
this.index = this.index + 1;
return this.current();
}
return false;
},
previous : function(){
if(this.hasPrevious()){
this.index = this.index - 1
return this.current();
}
return false;
}
}
};
var iter = Iterator([1,2,3]);
while(iter.hasNext()){
console.log(iter.next());
}
window.Iterator
AFAIK仅存在于Firefox中,而不存在于WebKit中。
从此线程:
V8是ECMAScript的实现,而不是JavaScript。后者是Mozilla对ECMAScript的非标准化扩展。
V8旨在与JSC插件兼容,JSC是WebKit/Safari中的ECMAScript实现。因此,它实现了ECMAScript的许多非标准扩展,这些扩展也在JSC中,其中大多数也在Mozilla的JavaScript语言中。
没有计划将JSC中没有的非标准功能添加到V8中。
注:JSC代表JavaScriptCore——WebKit ECMAScript实现。
var makeIterator = function (collection, property) {
var agg = (function (collection) {
var index = 0;
var length = collection.length;
return {
next: function () {
var element;
if (!this.hasNext()) {
return null;
}
element = collection[index][property];
index = index + 1;
return element;
},
hasNext: function () {
return index < length;
},
rewind: function () {
index = 0;
},
current: function () {
return collection[index];
}
};
})(collection);
return agg;
};
var iterator = makeIterator([5,8,4,2]);
console.log(iterator.current())//5
console.log( iterator.next() )
console.log(iterator.current()) //8
console.log(iterator.rewind());
console.log(iterator.current()) //5
这意味着Chrome v21不支持JavaScript的这一功能。这是1.7规范的一部分。尝试这样做可能有助于在Chrome中明确指定1.7支持。
对于铬,您可以使用此
var someArray = [1, 5, 7];
var someArrayEntries = someArray.entries();
这是一个链接,您可以在这里找到有趣的
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- JavaScript1.7区分数组和对象的迭代程序
- JavaScript迭代程序
- 使用 Node.jS 驱动程序在 MongoDB 中迭代多个集合并比较结果
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- 谷歌应用程序电子表格脚本;t总是完成迭代,否则效果良好
- 闭包(JS)迭代程序
- 迭代摘要应用程序Rally SDK
- 如何设置class=“;活动的”;当使用迭代生成N个选项卡(引导程序)时
- 在Ionic中,如何在for循环的每次迭代后向应用程序视图添加数据
- 当我在jQuery应用程序中迭代javascript字典的键时,我得到的是数字而不是值
- 量角器:如何迭代和比较从应用程序和场景表使用中继器得到的值
- 如何在React应用程序中隔离和迭代各个React组件
- Javascript:在for循环中定义的每个事件处理程序都是相同的,使用上次迭代的值
- jQuery/JavaScript:仅在循环的最后一次迭代期间分配的事件处理程序