我有一个带有嵌套对象的 JavaScript 对象。每个嵌套对象都有一个名为“模型”的键及其值。我想从每个嵌套对象中删除“模型”键,并将其替换为新属性的值。这样,生成的对象将具有相同的值,但没有“模型”键。
这是代码:
let data = {
car: {
model: 1999
},
van: {
model: 1850
}
};
期望的输出是:
let data = {
car : 1999,
van: 1850
}
经过长时间的搜索,我找到了解决方案:
// Iterate over each key in the data object
for (let key in data) {
// want to Check if the current key has a nested object with a "model" key
if (data[key].hasOwnProperty("model")) {
// store the value of the "model" key
let value = data[key].model;
// remove the "model" key from the nested object
delete data[key].model;
// add a new property with the same key and the stored value
data[key] = value;
}
}
console.log(data);
Object.entries
,然后迭代它们以更新新对象。
const data={car:{model:1999},van:{model:1850}};
// Initialise a new object
const out = {};
// Get the entries from the data
// Each entry will be an array with
// a key/value pair:
// ["car", { "model": 1999 }]
const entries = Object.entries(data);
// Then for each of those arrays destructure
// the key and obj, and update your new object
// using that information
for (const [key, obj] of entries) {
out[key] = obj.model;
}
// Ta da!
console.log(out);
附加文件
您可以使用这种方法
let data = {
"car": {
"model": 1999
},
"van": {
"model": 1850
}
}
let result = Object.keys(data).map(function(e){
return {[e] : data[e]['model']};
});
let data = {
car: {
model: 1999,
},
van: {
model: 1850,
},
};
let dataarray = Object.entries(data);
data = {};
for (let i = 0; i < dataarray.length; i++) {
data[dataarray[i][0]] = dataarray[i][1].model;
}
console.log(data);
let data = {
"car": {
"model": 1999
},
"van": {
"model": 1850
}
}
const dataFormated = Object.entries(data).reduce((acc, [k, {model}]) => ({...acc, [k] : model}), {})