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

时间:2018-07-11 20:18:27

标签: javascript api object key-value nest-nested-object

我已经从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' }

2 个答案:

答案 0 :(得分:2)

听起来您想将整个对象展平为一组键值对。您可以使用简单的递归函数来完成此操作,该函数将键/值添加到返回对象(如果它们是简单值),或者将其添加到返回对象(如果值是对象):

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

如果对象中的任何地方都有重复的键,这将需要更多的工作。

答案 1 :(得分:0)

如果要展平对象,也可以使用lodash _flatten()方法。就像魅力一样。