#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,
}
Спасибо 🙂