使用带引号的键映射 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()
方法。就像一个魅力。
我收到了来自 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()
方法。就像一个魅力。