typescript - 如何将对象的对象映射到打字稿中的一个对象
问题描述
我有以下输出:
let obj = {
id:"111",
name:"sven",
nicknames:{
name1:"svini",
name2:"sivi"
}
cars: {
car1 : "BMW",
car2 : "mercedies"
}
}
我如何将此 obj 映射到此输出?:
convertedObject = {
id:"111",
name:"sven",
nicknames:"svini",
cars:"BMW"
}
因此,如果原始对象内的对象具有多个元素,则取该对象的第一个元素
解决方案
由于对象键没有排序,您首先必须根据最后的数字对键进行排序:
let obj = {
id:"111",
name:"sven",
nicknames:{
name1:"svini",
name2:"sivi"
},
cars: {
car1 : "BMW",
car2 : "mercedies"
}
};
function getNumber(str) {
return parseInt(str.match(/\d+$/)[0], 10);
}
const convertedObject = {};
for (const key in obj) {
if (typeof obj[key] === "object") {
const keys = Object.keys(obj[key]);
// this is essentially a minBy implementation
let minVal = getNumber(keys[0]);
let minKey = keys[0];
for (const key of keys) {
const val = getNumber(key);
if (val < minVal) {
minVal = val;
minKey = key;
}
}
convertedObject[key] = obj[key][minKey];
} else {
convertedObject[key] = obj[key];
}
}
console.log(convertedObject);
推荐阅读
- c++ - std::cout 的简约重新实现
- reactjs - 如何将令牌存储在 React 库的 LocalStorage 中
- c++ - 如何在不区分大小写的情况下检查文本文件是否为回文
- javascript - 使用 jquery UI 格式化输入但获取原始值进行计算
- c - C 中的骰子程序
- javascript - JavaScript:如何将数组中的值添加到来自不同数组的对象属性?
- database - Moodle中不存在自定义表
- pega - SendEmailNotifictaion 抛出 smtphost 错误
- java - 单元测试有问题,我怎样才能让它只工作1次?
- azure - Azure BlobTrigger 为每个新 blob 触发 > 5 次