Сочетание старых настроек с новыми настройками - PullRequest
0 голосов
/ 07 декабря 2018

Здесь делается объединение oldSettings с newSettings .

Код:

https://jsfiddle.net/zt7anuL3/96/

oldSettings , будет ссылаться на « defaultSettings », с которого они все начинаются.

 playerVars: {
            autoplay: 1,
            controls: 1,
            showinfo: 1,
            rel: 0,
            iv_load_policy: 3,
            cc_load_policy: 0,
            fs: 0,
            disablekb: 1,
        },

newSettings - это то, что указывается в каждом загрузочном проигрывателе .

loadPlayer({
    target: ".jacketc",
    width: 600,
    height: 338,
    start: 200,
    end: 205,
    loop:true
});

Я пытался сделать это самостоятельно, ноЯ не уверен, что написал это правильно.

Мне нужно знать, правильно ли я это делаю или нет, а если нет, то каким будет правильный путь.Если бы вы могли внести в него исправления, это было бы полезно.

Кто-то только что сказал мне, что я могу использовать Object.assign() для объединения свойств, но как это будет сделано?И это то, что я хочу сделать здесь?

function combineSettings(oldSettings, newSettings) {
        const props = Object.keys(newSettings);
        const combinedSettings =  props.reduce(function combine(combined, prop) {
            if (typeof(oldSettings[prop]) === "object") {
                const oldProp = oldSettings[prop] || {};
                const newProp = newSettings[prop] || {};
                combined[prop] = combineSettings(oldProp, newProp);
            } else {
                combined[prop] = newSettings[prop];
            }
            return combined;
        }, oldSettings);

        return combinedSettings;
    }

1 Ответ

0 голосов
/ 07 декабря 2018

Похоже, вы пытаетесь сделать то, что делает Object.assign().Вы можете использовать Object.assign() для объединения свойств двух или более объектов.Вы можете найти документацию здесь .

Важно помнить, что свойства предыдущих объектов перезаписываются объектами, которые следуют в списке параметров.

var obj1 = {
  a: 1,
  b: 2
};

var obj2 = {
  a: 3,
  c: 4
};

var obj = Object.assign({}, obj1, obj2);
console.log(obj);

Вы можете изменить свою функцию, как показано ниже:

function combineSettings(oldSettings, newSettings) {
    return Object.assign({}, oldSettings, newSettings);
}
...