Нажмите объект со свойством массива

112
9

Как это сделать в одной строке:

var u = { code: 'foo' };
var a = [];
var o = {};
o[u.code] = 'bar';
a.push(o);

Следующие, которые я предположил бы работать, недействительны:

a.push({ u.code: 'bar' });
a.push({ u['code']: 'bar' });

У меня может быть просто мозг здесь...

спросил(а) 2021-01-19T20:15:11+03:00 9 месяцев, 1 неделя назад
1
Решение
65

Самый короткий код, который вы можете сделать в ES5:

var u = { code: 'foo' }, a = [{}];
a[0][u.code] = 'bar';

Когда вычисленные свойства поддерживаются браузерами (входящими в ES6), вы можете использовать:

var u = { code: 'foo' }, a = [{[u.code]: 'bar'}];

Вы также можете использовать синтаксис ES6 сегодня и перевести его на ES5.

ответил(а) 2021-01-19T20:15:11+03:00 9 месяцев, 1 неделя назад
46

Ответ Felix Kling абсолютно прав, хотя есть грязная альтернатива делать то, что вы хотите, всего в одной строке (не говорите никому, я вам говорил, что вы делаете такую вещь = P):


a.push(JSON.parse('{"{0}": "bar"}'.replace('{0}', u.code)))

ответил(а) 2021-01-19T20:15:11+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема