我想在物件的物件內轉換值。像這樣的東西:
初始物件:
const studentDetails = {
'details1': {Name: "John", CountryName: "US", value: 1},
'details2': {Name: "David", CountryName: "AUS", value: 2},
'details3': {Name: "Bob", CountryName: "UK", value: 3},
};
轉換物件:
{
'details1': {Name: "John", CountryName: "US", value: 2},
'details2': {Name: "David", CountryName: "AUS", value: 3},
'details3': {Name: "Bob", CountryName: "UK", value: 4},
};
我已經做了類似的事情,但無法弄清楚
Object.fromEntries(Object.entries(studentDetails).map(([key,
value]) => [key, some data transformation on value]))
uj5u.com熱心網友回復:
你可以做這樣的事情。我們定義了一個transformValue函式,該函式接收學生詳細資訊物件和任何轉換函式。然后對每個值應用變換函式并回傳整個變換后的細節物件。
const studentDetails = {details1: { Name: "John", CountryName: "US", value: 1 }, details2: { Name: "David", CountryName: "AUS", value: 2 }, details3: { Name: "Bob", CountryName: "UK", value: 3 }};
const transformValue = (details, transform) => {
return Object.entries(details).reduce((acc, [key, detail]) => {
acc[key] = {
...detail,
value: transform(detail.value)
}
return acc;
}, {});
};
console.log(transformValue(studentDetails, (val) => val 1)); // Increments value
console.log(transformValue(studentDetails, (val) => val * val)); // Squaring values
uj5u.com熱心網友回復:
不涉及Object.fromEntries或的解決方案reduce。只需遍歷物件,將更新的物件添加到output,然后回傳output。
const data={details1:{Name:"John",CountryName:"US",value:1},details2:{Name:"David",CountryName:"AUS",value:2},details3:{Name:"Bob",CountryName:"UK",value:3}};
const increment = (n) => n 1;
const decrement = (n) => n - 1;
function transform(data, prop, fn) {
const output = {};
for (const key in data) {
output[key] = {
...data[key],
[prop]: fn(data[key][prop])
};
}
return output;
}
const update1 = transform(data, 'value', increment);
const update2 = transform(update1, 'value', decrement);
console.log(update1);
console.log(update2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526239.html
上一篇:在螢屏上顯示方法的結果
