У меня есть следующий объект:Как написать функцию, которая встраивает свойства объекта
var ob = {
view: {
name: 'zpo',
params: {
taskId: 3,
zuka: 'v'
}
}
}
Мне нужно, чтобы этот объект в следующем виде:
{
"view.name":"zpo",
"view.params.taskId":3,
"view.params.zuka":"v"
}
Я написал функцию, которая может сделайте это, но проблема в том, что для этого требуются внешние переменные, переданные ему. Вот эта функция:
function inline(o, result, container) {
for (var p in o) {
if (typeof o[p] === "object") {
inline(o[p], result.length > 0 ? result+'.'+p : p, container);
} else {
container[result + '.' + p] = o[p];
}
}
}
var ob = {
view: {
name: 'zpo',
params: {
taskId: 3,
zuka: 'v'
}
}
}
var c = {};
var r = inline(ob, '', c);
Есть ли способ, чтобы написать эту функцию, чтобы вернуть правильный результат без необходимости пройти result
и container
внешних переменными?
Перед тем, как попытаться сделать что-то ненужное: зачем он нужен в этом формате? Почему бы не просто использовать объект 'view' внутри' ob'? Что касается вашей проблемы с кодом: нет, это не так, просто возвращайте функцию, поместите этот 'container' в первую строку функций' container = {} ', а затем завершите функцию в' return container'. Основной шаблон возврата. –
@ Mike'Pomax'Kamermans. можете ли вы привести пример того, что вы имеете в виду? –