如何在使用JavaScript的n次迭代中避免for-if-else地狱
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在使用JavaScript的n次迭代中避免for-if-else地狱,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1647字,纯文字阅读大概需要3分钟。
内容图文
![如何在使用JavaScript的n次迭代中避免for-if-else地狱](/upload/InfoBanner/zyjiaocheng/793/7f3ef6545182429e93ffc170ddf329be.jpg)
例如,我有这个代码:
var Foo = [1,2,3,4];
function searchInFoo(n) {
for(var i = 0, arrayLength = Foo.length; i < arrayLength; i++) {
if(Foo[i] === n) {
console.log("N: " + n + " found!");
} else {
console.log("N: " + n + " not found!");
}
}
}
searchInFoo(4);
好吧,正如我所预期的那样,我有一个带有n个元素的Foo数组,我也有n次迭代的for循环.这很酷.所以,如果我用任何n参数调用searchInFoo函数,我的函数也将执行if else语句中的所有块n次.例如,在上面的例子中,我曾经记录过“n found”,并且三次“N:n not found!”.
什么是避免在else块中执行的最佳方法,而不会丢失一些基本的错误捕获功能,当我省略整个else块时实际发生的事情如下:
var Foo = [1,2,3,4];
function searchInFoo(n) {
for(var i = 0, arrayLength = Foo.length; i < arrayLength; i++) {
if(Foo[i] === n) {
console.log("N: " + n + " found!");
}
}
}
searchInFoo(1);
解决方法:
在这种情况下,您不需要循环:
var foo = [1,2,3,4];
function searchInFoo(n) {
if(foo.indexOf(n) > -1) {
console.log("N: " + n + " found!");
}
}
searchInFoo(1);
注意:不要大写变量名称,保留构造函数.
或者,甚至更简单:
function searchInFoo(n) {
return foo.indexOf(n) > -1;
}
console.log(searchInFoo(1) ? 'found' : 'not found');
在再次阅读您的问题后,我相信您正在寻找更通用的内容,例如forEach和map(MDN上提供的polyfill).如何迭代一个给定的数组,并在每个项目上运行一个函数?
function myforeach(arr, fn) {
for(var i=0; i<arr.length; i++) {
fn(arr[i]);
}
}
myforeach([1,2,3], function(el) {
console.log(el === 1);
}); // logs true, false, false
自定义地图功能非常相似:
function mymap(arr, fn) {
var retArray = [];
for(var i=0; i<arr.length; i++) {
retArr.push(fn(arr[i]));
}
return retArray;
}
var validated = myforeach([1,2,3], function(el) {
return el === 1;
}); // returns [true, false, false]
内容总结
以上是互联网集市为您收集整理的如何在使用JavaScript的n次迭代中避免for-if-else地狱全部内容,希望文章能够帮你解决如何在使用JavaScript的n次迭代中避免for-if-else地狱所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。