我在使用数组作为参数构建组合函数时遇到问题。 出现这个错误
类型错误:arr.map 不是函数
const testArray = ["CusTom", "Web", "aNd", "MoBile", "PlaTfoRms"];
const compose =
(...fncs) =>
(val) =>
fncs.reduceRight((acc, fnc) => fnc(acc), val);
const modifyArray = (ModifyCondition) => (data) => ModifyCondition(data);
let capitalizeAllFirst = modifyArray(
compose(
(arr) =>
arr.map(
(str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
),
(arr) => arr.join("-")
)
);
let allToLower; // use compose + modifyArray here
console.log(capitalizeAllFirst(testArray));
我尝试在撰写中使用一个参数,效果很好
let capitalizeAllFirst = modifyArray(
compose(
(arr) =>
arr.map(
(str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
)
)
);
您的代码很完美,只是您使用了
reduceRight
而不是 reduce
。这意味着您已将数组连接到字符串中,然后尝试将其视为数组以将其大写。
const testArray = ["CusTom", "Web", "aNd", "MoBile", "PlaTfoRms"];
const compose = (...fncs) =>
val => fncs.reduce((acc, fnc) => fnc(acc), val);
const modifyArray = modifyCondition => data => modifyCondition(data);
let capitalizeAllFirst = modifyArray(compose(
arr => arr.map(
str => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
),
arr => arr.join("-")
));
console.log(capitalizeAllFirst(testArray));