将oldSettings与newSettings结合

时间:2018-12-07 14:59:08

标签: javascript youtube youtube-api youtube-javascript-api

这里要做的是旧设置与新设置相结合。

代码:

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 :(得分:0)

好像您正在尝试做Object.assign()一样。 您可以使用Object.assign()组合两个或更多对象的属性。 您可以找到文档here

要记住的重要一点是,前面对象的属性会被参数列表中后面的对象覆盖。

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);
}