gpt4 book ai didi

javascript - 如何在 JavaScript 中使用链而不应用反模式?

转载 作者:行者123 更新时间:2023-11-28 16:03:52 25 4
gpt4 key购买 nike

如果您尝试在 JavaScript 上以函数式风格进行编程,您可能会发现传统的 fn(obj,params...) 形式很快就会变得不可读。

console.log(
join(
map(function(row){ return row.join(" "); },
format(
map(function(text){return align(text},
view),
20))),
"\n");

VS

view.map(function(text){return align(text)})
.format(20)
.map(function(row){return row.join(" ");})
.join("\n")
.log();

问题在于,后一种风格只能通过使用新功能扩展Object.prototype来实现,这在全局范围内被认为是邪恶。然而,它的可读性是如此之高,以至于我不得不继续这样做。有没有更好的方法来解决这个问题?

最佳答案

是的,有更好的方法来解决这个问题。下面是使用 lodash 的演示.

错误的方法:

import _ from "lodash";

_.chain([1, 2, 3])
.map(x => [x, x*2])
.flatten()
.sort()
.value();

更好的方法:

import map from "lodash/fp/map";
import flatten from "lodash/fp/flatten";
import sortBy from "lodash/fp/sortBy";
import flow from "lodash/fp/flow";

flow(
map(x => [x, x*2]),
flatten,
sortBy(x => x)
)([1,2,3]);

参见Why using _.chain is a mistake.以获得精彩而深入的解释。

关于javascript - 如何在 JavaScript 中使用链而不应用反模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com