Да, пожалуй, напрямую никак:) По
спецификации именем свойства может быть значение строки или символа.
Вариантов работы несколько (откуда берётся возраст, не знаю:).
По старинке (или для словарей)
var countName = [
'Петя',
'Вася'
];
for (var i = 0, data = []; i < countName.length; ++i) {
data.push({});
data[data.length - 1][countName[i]] = {
age: 10
};
}
Те же шары, только сбоку
for (var i = 0, data = []; i < countName.length; ++i) {
data.push(set(countName[i], 10));
}
function set (name, value) {
var object = {};
object[name] = {
age: value
};
return object;
}
Или с использованием
Object.defineProperty() (можно варьировать параметры свойства)
for (var i = 0, data = []; i < countName.length; ++i) {
data.push(set(countName[i], 10));
}
function set (name, value) {
var object = {};
Object.defineProperty(object, name, {
value: {
age: value
}
});
return object;
}