Как я могу получить имя свойства внутри объекта, чтобы создать новое имя свойства? - PullRequest
1 голос
/ 22 марта 2019

Я знаю, что есть несколько других сообщений на эту тему, но они, похоже, не касаются моей проблемы: ссылка .

Я хочу иметь возможность динамически получать имя определенного свойства в объекте, чтобы я мог использовать его для создания нового имени свойства внутри другого объекта. Например, я получу имя свойства startMin из foo (как в моем коде ниже), а затем добавлю в его конец текст (например, startMin + Suffix), чтобы создать новое имя свойства. Как я могу это сделать?

Примечание по теме: я уже выяснил, как получить значение свойства с помощью foo[Object.keys(foo)[0]]. Хотя это работает, я не уверен, почему Object.keys получает значение свойства в этом случае, так как примеры, которые я нашел, предполагают, что Object.keys должен получить имя свойства, а не значение свойства. Я хотел бы знать, почему?

Я включил код pusdo foo[Object.returnObjectName(foo)[0]] + 'Cal', где я хочу, чтобы имя создавалось динамически. Конечно, это не работает.

var foo = {
  startMin: 1000
};

var fooResults = {
  // the property name here is psudo code 
  foo[Object.returnObjectName(foo)[0]] + 'Cal': foo[Object.keys(foo)[0]]
}

console.log('startMinCal: ' + fooResults.startMinCal) // This should log "1000" but won't until the object name inside `fooResults` is created correctly.

// 
console.log(Object.keys(foo)); // I believe this gests the property name, but it exists inside an array, so won't work as a new property name 
console.log(foo[Object.keys(foo)[0]]); // this gets the property value as expected.

ОБНОВЛЕННЫЙ РАБОЧИЙ КОД:

var foo = {
  startMin: 1000,
  startMax: 3000
};

var fooResults = {
  [Object.keys(foo)[0] + 'Cal']: foo[Object.keys(foo)[0]],
  [Object.keys(foo)[1] + 'Cal']: foo[Object.keys(foo)[1]]
}

console.log('startMinCal: ' + fooResults.startMinCal)
console.log('startMaxCal: ' + fooResults.startMaxCal)

1 Ответ

1 голос
/ 22 марта 2019

var foo = {
  startMin: 1000
};


//Object.keys return all the keys in an object passed as parameter

//here your wanted key is at first position
var key = Object.keys(foo)[0];

//get the value
var value = foo[key]

//append whatever suffix you want
key += 'Cal';



var fooResults = {
  //to use  content of variable as key of object put variable  in []   
  [key]: value
}


//another solution 
//create emtyy object 
var fooResults2 = {}

//use use variable name as index
fooResults2[key] = value


console.log('startMinCal: ' + fooResults.startMinCal) // This should log "1000" but won't until the object name inside `fooResults` is created correctly.

console.log('startMinCal: ' + fooResults2.startMinCal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...