这是一个很好的使用
reduce
的案例:
transform(input, transformers: Transform<Item>[]) {
const items: Item[] = getItems(input);
return items.map(item => transformers.reduce((val, transformer) => transformer(val), item));
}
也许更易读的方式是:
transform(input, transformers: Transform<Item>[]) {
const items: Item[] = getItems(input);
return items.map(
item => transformers.reduce(
(val, transformer) => transformer(val),
item
)
);
}
实时示例:
function getItems(input) {
return [
"abcdefg",
"1234567"
];
}
function transform(input, transformers) {
const items = getItems(input);
return items.map(item => transformers.reduce((val, transformer) => transformer(val), item));
}
const result = transform("x", [
v => v.toUpperCase(),
v => v.substring(1, v.length - 1)
]);
console.log(result);
正如Nitzan Tomer所指出的那样,我们可以取消
items
常量:
transform(input, transformers: Transform<Item>[]) {
return getItems(input).map(
item => transformers.reduce(
(val, transformer) => transformer(val),
item
)
);
}
我经常保留这些东西用于调试,但现在一些好的调试器让在函数返回之前查看其返回值变得更加容易(例如Chrome的调试器),因此,如果您删除了它,你可以进入getItems
函数并在执行map
操作之前查看项目。
forEach()
返回 void。不确定如何将转换的结果传递给下一个变量。 - Sasxa