【发布时间】:2021-08-22 03:26:42
【问题描述】:
我正在解决这个代码挑战:
创建一个函数countBy,它接受一个数组和一个回调,并返回一个对象。 countBy 将遍历数组并对每个元素执行回调。回调的每个返回值都将保存为对象上的键。与每个键关联的值将是返回特定返回值的次数。
下面是我做的代码
function countBy(array, callback){
let newObj = {}
let numOdd = 0
let numEv = 0
for(let i = 0; i < array.length; i++){
let callbackRes = callback(array[i])
if(callback(array[i]) === 'even'){
numEv++
}
else if(callback(array[i]) === 'odd'){
numOdd++
}
newObj[callbackRes] = numOdd
}
return newObj
}
我得到了正确的解决方案:
{ 奇数:3,偶数:2 }
但是,我不太确定这是为什么?起初,我试图设置
newObj[callbackRes] = numEv, numOdd
但是,这给了我这个解决方案:
{ odd: 2, even: 2 }
我发现尝试将对象分配给两个值只是将其分配给第一个 var。
为什么将 obj 值设置为 numOdd 返回的值与 numEv 不同?不应该是一样的,因为它正在经历相同的for循环吗?
【问题讨论】:
标签: javascript for-loop object