3 回答

TA貢獻1864條經驗 獲得超6個贊
如果你想使用 reduce 方法,那很好,但你必須返回累加器才能使其工作。
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
const my_obj = keys.reduce(function(acc, key, i) {
acc[key] = vals[i];
return acc;
}, {});
console.log(my_obj);
但我會建議使用簡單的 for 循環,因為問題很簡單
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
let my_obj = {};
for (let i = 0; i < keys.length; i++)
my_obj[keys[i]] = vals[i];
console.log(my_obj);

TA貢獻1725條經驗 獲得超8個贊
您需要將對象作為 acc 返回。在您的代碼中,您將返回分配的值
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
const my_obj = keys.reduce(function(acc, key, i) {
acc[key] = vals[i];
return acc;
}, {});
console.log(my_obj);

TA貢獻1780條經驗 獲得超5個贊
return acc[key]=vals[i];
實際上返回vals[i]
==> 的值,您最終h
只能在https://playcode.io/環境中獲得。
更新:在您的環境中,您收到該錯誤是因為:
keys.reduce
在你的下一個第一次運行之后acc
("1"
返回acc[key]= vals[0]}
相等的返回vals[0]
是"1"
)現在你來到第二輪
keys.reduce
,你的 acc 就是"1"
你設置 的acc[key]= vals[1]}
equal"1"[b] = vals[1]
==> 你得到了那個錯誤
嘗試這個:
let keys = ['a','b','c'];
let vals = ['1','b','h'];
const my_obj = keys.reduce(function(acc,key,i) {
// return new expanded acc
return ({...acc, [key]: vals[i]})
},{});
console.log(my_obj);
添加回答
舉報