我有這個物件:
{
"data": {
"success": true,
"historical": true,
"date": "2022-01-01",
"base": "MXN",
"rates": {
"COFFEE": 0.02158734144632395,
"CORN": 0.008232645172711363,
"COTTON": 0.04320921676820366,
"SOYBEAN": 0.0036714622235960175,
"SUGAR": 0.25680398615582695,
"WHEAT": 0.00017592643558262669
},
"unit": "per bushel"
}
}
我想迭代“rates”以用
我嘗試的 1 / 值替換每個鍵的值:(prueba 是物件名稱)
Object.values(this.prueba.data.rates).forEach((val) => {
console.log(val)
val = 1 / val;
console.log(val)
})
但是如何替換這些值或如何將它們保存在另一個陣列或物件中
uj5u.com熱心網友回復:
您的代碼不起作用,因為您所做的更改val僅反映在回呼范圍內。
相反,您應該回圈遍歷每個屬性并設定其值。
const obj={data:{success:!0,historical:!0,date:"2022-01-01",base:"MXN",rates:{COFFEE:.02158734144632395,CORN:.008232645172711363,COTTON:.04320921676820366,SOYBEAN:.0036714622235960175,SUGAR:.25680398615582695,WHEAT:.00017592643558262669},unit:"per bushel"}};
let r = obj.data.rates;
Object.keys(r).forEach(e => r[e] = 1 / r[e])
console.log(obj)
如果您使用的是 Typescript,則有必要像這樣宣告物件:
const obj: {[key: string]: any} = ...
uj5u.com熱心網友回復:
您可以迭代Object.entries(或Object.keys)并替換每個鍵的值。
let obj={data:{success:!0,historical:!0,date:"2022-01-01",base:"MXN",rates:{COFFEE:.02158734144632395,CORN:.008232645172711363,COTTON:.04320921676820366,SOYBEAN:.0036714622235960175,SUGAR:.25680398615582695,WHEAT:.00017592643558262669},unit:"per bushel"}};
Object.entries(obj.data.rates).forEach(([k, v]) => obj.data.rates[k] = 1 / v);
console.log(obj);
uj5u.com熱心網友回復:
我認為使用 for 回圈顯式撰寫它會更干凈:
let obj = {} //original object stated in question
let obj2 = Object.create(null);//DON'T just use {}, see below
for(let productName in obj.data.rates){
let inverse = 1/obj.data.rates[productName];
//to edit the object directly
obj.data.rates[productName] = inverse;
//to add to another object
obj2[productName] = inverse;
}
{}和之間的區別Object.create(null)可以在這里找到
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474613.html
標籤:javascript 数组 打字稿 目的
