如何从对象内部获取属性名称以创建新的属性名称?

Forestkelley

我知道有关该主题的其他文章,但似乎并未解决我的问题:link

我希望能够动态获取对象中特定属性的名称,以便可以使用它在另一个对象中创建新的属性名称。例如,我会得到属性名startMinfoo(如下面我的代码),然后将文本添加到它(如年底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)

宁静的亚伯拉罕·马修

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章