我有一個嵌套物件:
myObject {
"fshkj78gds": {
"name": "Joe",
"created_at": {
"nanoseconds": 745000000,
"seconds": 1645468219,
},
"updated_at": {
"nanoseconds": 0,
"seconds": 1645471800,
},
},
"gsdg987": {
"name": "Mike",
"created_at": {
"nanoseconds": 745000000,
"seconds": 1645468219,
},
"updated_at": {
"nanoseconds": 0,
"seconds": 1645471800,
},
},
}
我想在每個嵌套物件中轉換created_at并updated_at只回傳seconds一個數字,如下所示:
myObject {
"fshkj78gds": {
"name": "Joe",
"created_at": 1645468219,
"updated_at": 1645471800,
},
"gsdg987": {
"name": "Joe",
"created_at": 1645468219,
"updated_at": 1645471800,
},
}
我在想我需要混合map和Object.assign傳播運算子嗎?
到目前為止,我得到了:
Object.assign({}, myObject, Object.values(myObject).map((nestedObject) =>
Object.assign({}, nestedObject, {...nestedObject, created_at: nestedObject.created_at.seconds})
))
但這會生成一個物件陣列并且不保留原始結構。這樣做的正確方法是什么?
uj5u.com熱心網友回復:
用于forEach()迭代值,然后重新分配屬性。
Object.values(myObject).forEach(item => {
item.created_at = item.created_at.seconds;
item.updated_at = item.updated_at.seconds;
});
uj5u.com熱心網友回復:
使用Object#fromEntries,Object#entries和Array#map:
const myObject = {
"fshkj78gds": {
"name": "Joe",
"created_at": { "nanoseconds": 745000000, "seconds": 1645468219 },
"updated_at": { "nanoseconds": 0, "seconds": 1645471800 }
},
"gsdg987": {
"name": "Mike",
"created_at": { "nanoseconds": 745000000, "seconds": 1645468219 },
"updated_at": { "nanoseconds": 0, "seconds": 1645471800 }
}
};
const res = Object.fromEntries(
Object.entries(myObject).map(([ key, value ]) => ([
key,
{ ...value, 'created_at': value['created_at'].seconds, 'updated_at': value['updated_at'].seconds, }
]))
);
console.log(res);
uj5u.com熱心網友回復:
for (let key in obj) {
obj[key].created_at = obj[key].created_at.seconds;
obj[key].updated_at = obj[key].updated_at.seconds;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/431114.html
標籤:javascript 目的
