如何从 JavaScript 对象中删除特定键并将其替换为新属性的值 [关闭]

问题描述 投票:0回答:4

我有一个带有嵌套对象的 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);
javascript
4个回答
0
投票

您可以从数据对象(数组中的键/值对)中获取

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);

附加文件


0
投票

您可以使用这种方法

let data = {
    "car": {
        "model": 1999
    },
    "van": {
        "model": 1850
    }
}

let result = Object.keys(data).map(function(e){
    return {[e] : data[e]['model']};
});

0
投票
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);

0
投票
let data = {
    "car": {
        "model": 1999
    },
    "van": {
        "model": 1850
    }
}

const dataFormated = Object.entries(data).reduce((acc, [k, {model}]) => ({...acc, [k] : model}), {})
© www.soinside.com 2019 - 2024. All rights reserved.