我已经从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' }
答案 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()
方法。就像魅力一样。