Javascript: filling undefind properties in object from a default object

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-29 08:11:01

问题


I am trying to fill in undefined properties into an object using values from a default object.

I am basically looking to do something like underscores's "_.default" function.

Here is what I have:

     defaults: function(anyObject){

      var argArray = Array.prototype.slice.call(arguments,1);

       for(var key in argArray){
        if(anyObject[key] == null){
            anyObject[key] = argArray[key];
          } 
        } return anyObject; 
       }  

I call the function with the following passed:

defaults({extension : ".jpeg"}, {extension : ".gif", quality : "high"});

and I want it to return the following:

=> {extension : ".jpeg", quality : "high"}

any suggestions?


回答1:


I'd try something like this:

defaults: function(defaults) {
    var args = Array.prototype.slice.call(arguments, 1);

    for (var i = 0; i < args.length; i++) {
        var arg = args[i];

        for (var key in arg) {
            if (!(key in defaults)) {
                defaults[key] = arg[key];
            }
        }
    }

    return defaults;
}

This will only add new keys to defaults.




回答2:


Try like this:

defaults: function(obj, def) {
  Object.keys(def).forEach(function(key) {
    obj[key] = obj[key] || def[key]; 
  });
  return obj;
}


来源:https://stackoverflow.com/questions/15400595/javascript-filling-undefind-properties-in-object-from-a-default-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!