Присваивать объекту несколько значений за один раз, как при присвоении переменной в JavaScript

#javascript

#javascript

Вопрос:

Можно сделать:

 let a = 1,
    b = 3,
    c = 9;
  

Возможно ли также сделать:

 obj.a = 1,
    b = 2,
    c = 3;
  

Это все еще очень удобно для чтения, но намного меньше ввода, чем записи obj много раз.

Комментарии:

1. объявление происходит намного раньше, мне нужно только присвоение

2. вы могли бы перейти в свой delorean и использовать with … но это не рекомендуется

3. Object.assign(obj, { a: 1, b: 2, c: 3 }); сделал бы это в 1 строке, но просто назначить 3 раза подряд — это неплохо

4. возможно, одной из этих целей ранних программистов является меньший набор текста. Опытные программисты предпочитают читаемость и редактируемость краткости. В качестве доказательства посмотрите руководство по стилю практически любой крупной компании, в котором говорилось бы вам не кодировать таким образом.

Ответ №1:

Если переменные уже определены, вы можете использовать сокращенные имена свойств для определения объекта за один раз, без каких-либо повторений:

 const obj = { a, b, c };
  

Ответ №2:

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

 let a = 1,
    b = 3,
    c = 9;

let  obj = {a,b,c}
    
console.log(obj)  

Комментарии:

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

2. double memory usage да?

3. @MuhammadUmer в большинстве случаев использование памяти не будет проблемой, поскольку JS использует grabage collector

4. верно. это то, что я делаю прямо сейчас. приятно видеть, что это рекомендуется. единственная проблема, которую я вижу, заключается в том, что я объявляю / назначаю 2x переменных для одного и того же объема данных. но это не большая или даже средняя проблема.

Ответ №3:

Если существует связь между именами свойств и значениями, то можно написать компактное определение объекта с помощью map . В противном случае можно просто инициализировать объект именами и значениями.

 // function
var obj = {};
['a', 'b', 'c'].map((x, i) => (obj[x] = i));
console.log(obj);

// no function
var obj1 = {a: 1, b: 2, c: 4};
console.log(obj1);  

Ответ №4:

Если переменные еще не назначены, вы могли бы использовать Object.assign :

 const obj = Object.assign({}, { a: 1, b: 2, c: 3 });
console.log(obj);  

В противном случае используйте сокращенную запись свойств ES6:

 const [a, b, c] = [1, 2, 3];
const obj = { a, b, c };
console.log(obj);  

Ответ №5:

Вы можете сделать это (если объект можно переназначить, например: let НЕ const ):

 obj = {...obj, a : 1,
    b : 2,
    c: 3,
}
  

Спасибо 🙂