javascript - 什么都不做的数组方法
问题描述
我喜欢函数式编程,它让我的代码,尤其是作用域更干净。
我发现自己在我的代码中进行了非常繁重的数组操作,如下所示:
this.myArray = someArray
.slice(0, n)
.map(someFunction)
// more manipulation;
if (condition) {
this.myArray = this.myArray.reverse();
}
this.myArray = this.myArray
.reduce(anotherFunction, [])
// even more manipulation
是否有一些内置方法可以加入if
我的功能链?就像是:
this.myArray = someArray
.slice(0, n)
.map(someFunction)
// ... more manipulation
[condition ? 'reverse' : 'void']()
.reduce(anotherFunction, [])
// ... even more manipulation
该void()
方法不存在。有替代方案吗?将多个调用合并到一个链中是否流行的方法,即使这意味着调用什么都不做的方法?
我知道我可以将自己的方法添加到 Array:
Array.prototype.void = function () {
return this;
}
但这不是重点。是否有任何标准/内置方式可以达到相同的效果?
解决方案
作为中性功能,您可以采取
Array#concat
,它返回一个包含旧项目的新数组,或者Array#slice
,它也返回一个新数组。
推荐阅读
- jetty - 是否可以在 Jetty 中使用 InetAccessHandler 以及 X-Forwarded-For 标头?
- javascript - 如何在响应ajax jquery后创建数据表
- angularjs - 如何解决 Angular cli 中的引导程序问题
- git - 如何git忽略特定的无扩展名文件
- node.js - 如果循环多次,则递归函数内的循环失败
- html - 为图像制作波浪效果
- javascript - 自动将框六调整为文本输入行?
- c++ - Qt C++ 中 QMap().begin() 函数的不明显行为
- django - nginx、flower、Django、proxy_pass 和拒绝无效的 HOST
- assembly - 无法在我用 C 编写的内核中编写 char 数组