Установите значение по умолчанию для объекта в JavaScript - PullRequest
0 голосов
/ 19 июня 2019

У меня есть функция с именем addAlert, и эта функция принимает два параметра.

Первый параметр этой функции - строка, а второй параметр этой функции - объект.У объекта есть три свойства status, position и align.

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

addAlert(stringValue,valueObject) {
    //Set the default values for the valueObject
}

Ответы [ 5 ]

3 голосов
/ 19 июня 2019

Вы можете создать объект по умолчанию со свойствами по умолчанию и использовать Object.assign() следующим образом:

function addAlert(stringValue, valueObject) {
  const defaultObj = {
    status: "default status",
    position: "default position",
    align: "default align"
  };
  
  valueObject = Object.assign({}, defaultObj, valueObject)
  console.log(valueObject)
}

addAlert('', { status: "status" })
addAlert('', { position: "position", align: "align" })
addAlert('') // valueObject will be undefined
.as-console-wrapper { max-height: 100% !important; top: 0; }
2 голосов
/ 19 июня 2019

Вы можете установить значения параметров по умолчанию следующим образом:

addAlert(stringValue = 'default string',valueObject = {}) {
    //Set the default values for the valueObject
}

Для получения дополнительной информации, пожалуйста, посетите Параметры по умолчанию

0 голосов
/ 19 июня 2019

Вы можете использовать Object.assign для создания объекта со значениями по умолчанию:

const defaults = {
  a: 1,
  b: 2,
  c: 3
}

const obj1 = { a: 11 }
const obj2 = { a: 11, c: 33}
const obj3 = { a: 11, b: 22, c: 33 }

const newObj1 = Object.assign({}, defaults, obj1);
const newObj2 = Object.assign({}, defaults, obj2);
const newObj3 = Object.assign({}, defaults, obj3);

console.log(newObj1);
console.log(newObj2);
console.log(newObj3);

Кроме того, вы можете сделать то же самое, используя расширенный синтаксис :

const defaults = {
  a: 1,
  b: 2,
  c: 3
}

const obj1 = { a: 11 }
const obj2 = { a: 11, c: 33}
const obj3 = { a: 11, b: 22, c: 33 }

const newObj1 = { ...defaults, ...obj1};
const newObj2 = { ...defaults, ...obj2};
const newObj3 = { ...defaults, ...obj3};

console.log(newObj1);
console.log(newObj2);
console.log(newObj3);

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

addAlert(stringValue,valueObject) {
    const defaults = { status: "INFO", position: "TOP": align: "LEFT" };
    const settings = Object.assign({}, defaults, valueObj);
    /* use settings in the code */
}

или

addAlert(stringValue,valueObject) {
    const defaults = { status: "INFO", position: "TOP": align: "LEFT" };
    const settings = { ...defaults, ...valueObj };
    /* use settings in the code */
}
0 голосов
/ 19 июня 2019

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

    addAlert = (stringValue="defaultString",valueObject={status:"", position:"", align:""})=> {
        console.log(stringValue, valueObject)
    }
0 голосов
/ 19 июня 2019

Лучший способ сделать это - просто указать при вызове функции значение по умолчанию:

addAlert(stringValue = 'default',valueObject = 'default') {
    //Set the default values for the valueObject
}

Теперь, если вы хотите задать значение по умолчанию для stringObject.status, у вас есть два варианта: Вы проверяете, не определены ли они, и затем задаете для них значение по умолчанию:

addAlert(stringValue,valueObject) {
    if (valueObject.status == undefined) {
       valueObject.status = 'default';
    }
}

Или вы пропустите три разных поля по одному.

addAlert(stringValue,valueObject.status, etc..) {
    //Set the default values for the valueObject
}

Надеюсь, это поможет! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...