Добавить элемент к объекту, если объект существует, или создать новый объект, если он не существует - PullRequest
1 голос
/ 29 октября 2019

Мне нужно добавить элемент к объекту, если объект существует, в противном случае мне нужно создать новый объект с элементом.
Я знаю существование функции Object.assign, но я не уверен, как ее использовать.

Сейчас я попробовал вот что:

var myvar = obj ? Object.assign(obj, { "myvar" : "myvalue" }) : { "myvar" : "myvalue" };

Это правильный и более чистый способ сделать это?

Ответы [ 3 ]

0 голосов
/ 29 октября 2019

Попробуйте

(obj||{})["myvar"] = "myvalue"

obj = { test: 'ok' };

var myvar = (obj||{})["myvar"] = "myvalue";

console.log(myvar);
console.log(obj);
0 голосов
/ 29 октября 2019

Проверка, определен ли объект.

let obj = null;

if (typeof obj === "undefined") obj = {};
let updatedObj = Object.assign({},obj, {"myVar": "my value"});

console.log(updatedObj);

// or in one line
let obj2 = null;

let updatedObj2 = (typeof obj2 === "undefined")? {"myVar": "my value"} : Object.assign({},obj2, {"myVar": "my value"});

console.log(updatedObj2);

Редактировать : В случае obj это null

0 голосов
/ 29 октября 2019

копирование / вставка из одного из моих собственных проектов

Personnaly, я всегда так делаю:

var forms = forms || {};

forms.state = forms.state || {};

первая строка: если 'forms' ранее был неопределенным или нулевым, он создастновый объект. В противном случае формы будут присвоены его предыдущему значению. (Я часто использую это, когда у меня есть приложения только с простым JS или Jquery), это позволяет мне сортировать пространство имен моего приложения, не заботясь о порядке загрузки файла.

Вторая строка проверяет, является ли объект «состоянием»уже существует. Если он уже существует, он присваивает «forms.state» для «forms.state». В противном случае он создает новый объект.

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