Каков наилучший способ сопоставить объект Javascript с помощью кавычек
Я получил данные от 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 ответа
Решение
Звучит так, будто вы хотите объединить весь этот объект в единый набор пар ключ-значение. Вы можете сделать это с помощью простой рекурсивной функции, которая добавляет ключ / значения к возвращаемому объекту, если они являются простыми значениями, или рекурсивно, если значения являются объектами:
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()
метод. Работает как шарм.