我有以下输出:
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"
}
所以如果原始对象内的对象有多个元素,则取该对象的第一个元素
答案 0 :(得分:0)
由于对象键没有排序,您首先必须根据末尾的数字对键进行排序:
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);