使用带引号的键映射 Javascript 对象的最佳方法是什么

what is the best way to map Javascript object with Quoted keys

我收到了来自 API 的数据,像这样

var myObj = {'name':'ahmed','age':37,'tools':{'dev1':"macbook",'dev2':"iphone",'dev3':"tablet"},'gender':'male'};

键值对注意有嵌套对象的最好方法是什么?

更新 谢谢你的回答 这是如果我不想展平我的对象

var myObj = {'name':'ahmed','age':37,'tools':{'dev1':"macbook",'dev2':"iphone",'dev3':"tablet"},'gender':'male'};


function unQuoteKeys(obj, newObj ={}){
    Object.keys(obj).forEach(key => {
          newObj[key] = obj[key]
    });
    return newObj
}
console.log(unQuoteKeys(myObj));

结果

{ name: 'ahmed',
  age: 37,
  tools: { dev1: 'macbook', dev2: 'iphone', dev3: 'tablet' },
  gender: 'male' }

听起来您想将整个对象扁平化为一组键值对。您可以使用一个简单的递归函数来执行此操作,如果它们是简单值,则将 key/values 添加到 return 对象,或者如果值是对象,则递归:

var myObj = {'name':'ahmed','age':37,'tools':{'dev1':"macbook",'dev2':"iphone",'dev3':"tablet"},'gender':'male'};

function flatten(obj, res ={}){
    Object.keys(obj).forEach(key => {
        if (typeof obj[key] === 'object') flatten(obj[key], res)
        else res[key] = obj[key]
    })
    return res
}
console.log(flatten(myObj))

如果您可能会在对象中的任何位置使用重复的键,则需要多做一些工作。

如果你想压扁你的对象,你也可以使用lodash _flatten()方法。就像一个魅力。