提问人:LucasAE 提问时间:8/26/2022 更新时间:8/26/2022 访问量:349
将参数传递到内联函数数组中
Passing Arguments into array of inline functions
问:
挑战说明:构造一个函数 multiMap,它将接受两个数组:值数组和回调数组。multiMap 将返回一个对象,其键与值数组中的元素匹配。分配给键的相应值将是数组,该数组由回调数组的输出组成,其中每个回调的输入是键。
我的解决方案:
let obj = {};
for(let i = 0; i < arrVals.length; i++) {
obj[arrVals[i]] = [arrCallbacks.apply(null, arrVals[i])]
}
return obj;
}
console.log(multiMap(['catfood', 'glue', 'beer'], [function(str) { return str.toUpperCase(); }, function(str) { return str[0].toUpperCase() + str.slice(1).toLowerCase(); }, function(str) { return str + str; }]));
// should log: { catfood: ['CATFOOD', 'Catfood', 'catfoodcatfood'], glue: ['GLUE', 'Glue', 'glueglue'], beer: ['BEER', 'Beer', 'beerbeer'] }
思潮:显然我的对象键是正确的,但我似乎无法将 arrVals 参数中的值从 arrCallbacks 参数传入我的匿名函数调用列表。我尝试将我的键值设置为,但这只会填充数组中的第一个元素,但我需要将函数中的所有三个值传递到每个键的值中。唔唔......[arrCallbacks[i](arrVals[i])]
答:
0赞
Adrià
8/26/2022
#1
据我所知,我在您的代码中看到,您正在对回调数组使用 apply 方法,而不是在每个回调上使用。这可能就是它不起作用的原因。
这是我的猜测:
function multiMap(values, callbacks) {
let result = {}
// Iterate over the values
for (const value of values) {
// get an array of the result of the callbacks
result[value] = callbacks.map((callback) => callback(value));
// version using apply
// result[value] = callbacks.map((callback) => callback.apply(null, value));
}
return result
}
console.log(multiMap(['catfood', 'glue', 'beer'], [function(str) { return str.toUpperCase(); }, function(str) { return str[0].toUpperCase() + str.slice(1).toLowerCase(); }, function(str) { return str + str; }]));
评论
1赞
LucasAE
8/26/2022
它有效!我只需要更改我使用地图的方式的格式。谢谢!
评论