Javascript _.是否将对象中的值映射到另一个对象的字段名?
为了正确地问这个问题,我正在努力学习词汇表,下面是我的代码,并给出如下解释:Javascript _.是否将对象中的值映射到另一个对象的字段名?,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,为了正确地问这个问题,我正在努力学习词汇表,下面是我的代码,并给出如下解释: import _ from 'lodash'; import React, { Component } from 'react'; export default class Base extends Component { render() { const { cr, p } = this.props; return ( <tr classNam
import _ from 'lodash';
import React, { Component } from 'react';
export default class Base extends Component {
render() {
const { cr, p } = this.props;
return (
<tr className='bq-bottom-border'>
<td className='bq-column-border' colSpan='3'>Base</td>
<td>{cr.BaseN}</td>
<td>{'$' + (cr.Base10/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base25/1000).toFixed(1)}</td>
<td>{'$' + (cr.BaseMedian/1000).toFixed(1)}</td>
<td>{'$' + (cr.BaseMean/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base75/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base90/1000).toFixed(1)}</td>
</tr>
);
}
}
_.map(percentiles, p => {
'Base' + p
}
然后我想做如下操作:
import _ from 'lodash';
import React, { Component } from 'react';
export default class Base extends Component {
render() {
const { cr, p } = this.props;
return (
<tr className='bq-bottom-border'>
<td className='bq-column-border' colSpan='3'>Base</td>
<td>{cr.BaseN}</td>
<td>{'$' + (cr.Base10/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base25/1000).toFixed(1)}</td>
<td>{'$' + (cr.BaseMedian/1000).toFixed(1)}</td>
<td>{'$' + (cr.BaseMean/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base75/1000).toFixed(1)}</td>
<td>{'$' + (cr.Base90/1000).toFixed(1)}</td>
</tr>
);
}
}
_.map(percentiles, p => {
'Base' + p
}
要生成
中使用的字段名,您可以看到:cr.Base10
,cr.Base25
,等等。cr.
本身是一个每隔5个百分位的对象
这就是我无法理解如何实现它的地方。我不能做以下事情:
_.map(percentiles, p => {
<td>{'$' + (cr.Base{p}/1000).toFixed(1)}</td>
}
或:
我可以做一个
console.log(cr.Base10)代码>并按预期工作。使用Lodash,您可以从百分位对象的属性创建数组:
设_百分位数=_.值(百分位数)
然后,您可以在调用“地图”时反复使用此选项。好的,Ben Smith的答案,这帮助我得出了答案:
基本上,我们需要将陈述总结起来,以得出解决方案:
testRender(percentiles, cr) {
_.map(percentiles, p => {
let field = eval('cr.Base' + (p == 'n' ? 'N' : p));
console.log(field);
})
}
字段的实际值已记录在控制台中。Hi,感谢您的响应。还有问题。请看我修改过的问题。很高兴你找到了解决方案!
testRender(percentiles, cr) {
_.map(percentiles, p => {
let field = eval('cr.Base' + (p == 'n' ? 'N' : p));
console.log(field);
})
}