首页 文章

将oldSettings与newSettings结合使用

提问于
浏览
0

这里做的是 combining oldSettingsnewSettings .

Code:

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 将是每个 load player 中指定的内容 .

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

I tried to do this on my own, but I'm not sure I wrote it correctly.

我需要知道我这样做是否正确,如果我不这样做,那么正确的做法是什么 . 如果你能提供有用的更正 .

有人告诉我,我可以使用 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

    看起来你正在努力做 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);
    }
    

相关问题