Подтвердить что ты не робот

Как получить значение из объекта, со значением по умолчанию

Я постоянно нахожу, что передаю значения конфигурации для функций, обращающихся к ним следующим образом:

var arg1 = 'test1';
if(isUndefined(config.args.arg1)){
  arg1 = config.args.arg1;
} 

var arg2 = 'param2';
if(isUndefined(config.args.arg2)){
  arg2 = config.args.arg2;
} 

var arg3 = '123';
if(isUndefined(config.args.arg3)){
  arg3 = config.args.arg3;
} 

где я потом использую их следующим образом:

var url = '<some-url>?id='+arg1+'&='+arg2 +'=' + arg3;

Предоставляет ли jQuery/ExtJS или любую другую инфраструктуру решение для доступа к таким переменным простым способом и дает переменные значение по умолчанию?

Что-то вроде:

getValueOfObject(config,'args.arg3','<default>');

Или может быть стандартное решение для этого.

Примечание:

Я также думал об общей схеме, где у вас есть значения по умолчанию

var defaults = {
   args: {
      args1: ....
   }
   ...
}

и выполнить слияние объектов.

И затем кодирование объекта в параметр String. Но поскольку вы можете видеть, что объекты значения также иногда содержат имена параметров.

4b9b3361

Ответ 1

Похоже, наконец lodash имеет _. get() для этого!

Ответ 2

Как правило, можно использовать или оператор, чтобы назначить значение по умолчанию, когда какая-либо переменная оценивается как ложная:

var foo = couldBeUndefined || "some default";

так:

var arg1 = config.args.arg1 || "test";
var arg2 = config.args.arg2 || "param2";

предполагая, что config.args всегда определяется, как следует из вашего примера.

Ответ 3

попробуйте var options = extend(defaults, userOptions);

Таким образом вы получаете все userOptions и возвращаетесь к значениям по умолчанию, когда они не передают никаких параметров.

Примечание используйте любую extend, которую вы хотите.