Мне нравится кодировать, как будто я пишу на функциональном языке программирования.
Поэтому мое решение для Вашего вопроса будет:
function combineSettings(oldSettings, newSettings) {
return Object.assign(
{},
oldSettings,
newSettings,
{
playerVars:
Object.assign(
{},
oldSettings.playerVars,
newSettings.playerVars
)
}
);
}
const settings1 = {
someSet1: 'a',
playerVars: {
notifications: true,
someVar: 1
}
};
const settings2 = {
someSet1: 'aa',
someSet2: 'b',
playerVars: {
notifications: false,
mail: "somebody@gmail.com"
}
};
console.log(combineSettings(settings1, settings2));
Если вы хотите минимизировать однострочно, вам нужно переместить эти переменные в массив, а затем просто вызвать Object.assign
с оператором распространения:
function combineSettings(oldSettings, newSettings) {
var playerVars = [
oldSettings.playerVars,
newSettings.playerVars
];
playerVars = Object.assign({}, ...playerVars); // Your one-liner
// other operations
return {playerVars};
}
const settings1 = {
playerVars: {
notifications: true,
someVar: 1
}
};
const settings2 = {
playerVars: {
notifications: false,
mail: "somebody@gmail.com"
}
};
console.log(combineSettings(settings1, settings2));
ИЛИ
Разделить его на строки:
function combineSettings(oldSettings, newSettings) {
var playerVars =
Object.assign(
{},
oldSettings.playerVars,
newSettings.playerVars
);
// other operations
return {playerVars};
}
const settings1 = {
playerVars: {
notifications: true,
someVar: 1
}
};
const settings2 = {
playerVars: {
notifications: false,
mail: "somebody@gmail.com"
}
};
console.log(combineSettings(settings1, settings2));
Предупреждение: Изменяя имена параметров на более короткие, мы теряем их самодокументирование.oldSettings
, newSettings
говорят сами за себя.
Таким образом, это единственный прекрасный способ сделать код читаемым и расширяемым, разбивая длинную строку на несколько строк.
Я прогуглил его по запросу: js style guide
и нашел следующие полезные ресурсы для чтения:
https://standardjs.com/
https://google.github.io/styleguide/jsguide.html
https://github.com/felixge/node-style-guide
Дополнительно: У большинства IDE есть способ украсить, который сделает это за вас