在javascript中,我有这种情况:
this.props.number
始终为数字0,1或2
this.props.columnas
是一个像这样的对象数组:
[
{value:'1',text:'AA'},
{value:'2',text:'BB'},
{value:'3',text:'CC'},
{value:'4',text:'DD'},
{value:'5',text:'EE'},
{value:'6',text:'FF'},
{value:'7',text:'GG'}
]
selected
是一个对象数组,如下所示:
[{col:"2", ope:"", val:""}, {col:"5", ope:"", val:""}, {col:"7", ope:"", val:""}, ]
我有这段代码:
this.props.columnas.map(function(col){
if(this.props.number == 0) {
if (col.value == selected[0].col)
disabledIndice = true
else
disabledIndice = false;
}
else if(this.props.number == 1) {
if (col.value == selected[0].col || col.value == selected[1].col)
disabledIndice = true
else
disabledIndice = false;
}
else if(this.props.number == 2) {
if (col.value == selected[0].col || col.value == selected[1].col || col.value == selected[2].col)
disabledIndice = true
else
disabledIndice = false;
}
return <option value={col.value} disabled={disabledIndice}>{col.text}</option>
}.bind(this))}
(忘记bind
。function
和es5,无论如何我都会使用箭头功能。
时间太长而且我没有做我需要做的事情。我想在selected
中再次使用地图来查找哪个col.value
与selected
上存储的selected
相同。
在上面的代码中,我假设我有s why the code is using those ìf
的3个对象,但情况并非总是如此。有时可能是1,2或3个对象,每种情况this.props.number
(对象数量由this.props.columnas.map(function(col){
indicesYaSeleccionado.map(function(item){
if (col.value == item.col)
disabledIndice = true
else disabledIndice = false;
});
return <option key={constant.guid()} value={col.value} disabled={disabledIndice}>{col.text}</option>
}.bind(this))
定义)。那很难看。
我尝试过这样的事情:
disabled
但是我总是得到disabledIndice = true
,因为我要比较每个值,我需要至少在1次巧合中设置为var Test = "3700 NO LAND VALUE (Lease Property) (0.10)";
var Regex = /([\d]+[.][\d]+)/g;
var output = Regex.exec(Test);
alert(output[1]);
。
任何提示?这是一个很长的解释,抱歉。
答案 0 :(得分:1)
根据我的理解,您只需查看当前col
值是否在selected.val
数组中。
this.props.columnas.map(function(col){
let disabledIndice =
selected.findIndex(e => e.col === col.value) !== -1
? true : false
return <option value={col.value} disabled={disabledIndice}>{col.text}</option>
}.bind(this))}
此代码应该可以正常工作。
答案 1 :(得分:1)
您必须将this.props重新添加到您的上下文变量中,但这应该涵盖它。我试着给你尽可能多的箭头功能。您的返回将破坏代码,但如果与React的JSX一起使用它应该可以正常工作。
//removed this.props references for the sake of this example
const columnas = [
{value:'1',text:'AA'},
{value:'2',text:'BB'},
{value:'3',text:'CC'},
{value:'4',text:'DD'},
{value:'5',text:'EE'},
{value:'6',text:'FF'},
{value:'7',text:'GG'}
];
//could be 0, 1, or 2
let curNum = 1
let selected = [{col:"2", ope:"", val:""}, {col:"5", ope:"", val:""}, {col:"7", ope:"", val:""}, ]
columnas.map( el => {
let disabledIndice = selected.every( sel => el.value == sel.col ) ?
true : false;
return <option key={constant.guid()} value={col.value} disabled={disabledIndice}>{col.text}</option>
}.bind(this))
});
&#13;