我正在嘗試更改userInfowith中的值userArray。我試圖通過寫來改變字典的第一個值,Object.values(userInfo)[0] = userArray[0]但它沒有用。還有另一種方法可以更改字典中的值嗎?
let userInfo = {'John': money(),'Mary': money(),'Bob': money()}
console.log('Before Dictionary:',userInfo)
let total = 0
let userArray = Object.values(userInfo); //To get dictionary values into array
userArray.forEach(doubleMoney) //Multiply array values by 2
function money(){
randomMoney = Math.floor(Math.random() * 1000000);
return randomMoney
}
function doubleMoney(element,index,array){
array[index] = element * 2
}
Object.values(userInfo)[0] = userArray[0] //Change the first value of dict to first value of array
console.log('Mutiplied array: ',userArray)
console.log('After Dictionary: ',userInfo);
uj5u.com熱心網友回復:
您可以使用解構賦值
const first_dict = { 'key_one': 'value_one', 'key_two': 'value_two' }
const second_dict = { 'key_one': 'value_from_second_dict', 'key_three': 'value_three' }
const accumulative = {
...first_dict,
...second_dict
}
console.log(accumulative)
uj5u.com熱心網友回復:
您的代碼不起作用的原因是因為這些值是原語 ,例如數字,所以當您創建時,userArray您只需獲得一個新的數字陣列。更改它們對它沒有影響,userInfo它不包含對的參考userInfo,只有值。
因此,要更改 中的值userInfo:
// Note that heys are not guaranteed to be ordered so you need to track this yourself
// See https://stackoverflow.com/q/5525795/885922
userInfo[firstKey] *= 2;
要更改所有值,請使用for... in:
for (let user in userInfo) {
userInfo[user] *= 2;
}
有關更多資訊,我建議閱讀JavaScript 是按參考傳遞還是按值傳遞語言?.
uj5u.com熱心網友回復:
賦值運算子 '=' 用于為變數賦值。在您的情況下, Object.values(userInfo)[0] 將回傳該值,該值不能分配給另一個值(userArray[0])。
您可以嘗試以下解決方案:
Object.keys(userInfo).forEach((key, index) => {
userInfo[key] = userArray[index]
});
console.log(userInfo);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525606.html
標籤:javascript数组
