在Javascript对象的每个键中检查特定值
我有以下几行:在Javascript对象的每个键中检查特定值,javascript,html,css,reactjs,javascript-objects,Javascript,Html,Css,Reactjs,Javascript Objects,我有以下几行: <button className={`actionBoxButton ${props.moves[0].moveName !== "FirstPassMove" && props.moves[0].moveName !== "PassMove" ? "actionBoxButtonGrey" : ''}`} 如果您想添加类名,以防至少有一个移动具有FirstPassMove或PassMove名称,您应该使用 我猜您希望检查所有移动是否满足约束,在这种情
<button className={`actionBoxButton ${props.moves[0].moveName !== "FirstPassMove" && props.moves[0].moveName !== "PassMove" ? "actionBoxButtonGrey" : ''}`}
如果您想添加类名,以防至少有一个移动具有FirstPassMove
或PassMove
名称,您应该使用
我猜您希望检查所有移动是否满足约束,在这种情况下,您可以使用Array.prototype.each
来确保每个移动都满足约束。如果您只需要一些移动
来满足约束,则可以使用Array.prototype.some
//例如
常量道具={
移动:[
{moveName:'FirstPassMove'},
{moveName:'PassMove'},
{moveName:'PassMove'},
{moveName:'OtherPassMove'},
]
};
函数isValidMove({moveName}){
返回moveName!=“FirstPassMove”
&&moveName!=“PassMove”;
}
函数getActionBoxButtonClassName(hasColor){
返回'actionBoxButton${hasColor?'actionBoxButtonGrey:'}';
}
console.log([
getActionBoxButtonClassName(props.moves.every(isValidMove)),
getActionBoxButtonClassName(props.moves.some(isValidMove))
]);代码>您可以通过为动态类名定义单独的函数来简化jsx,如下所示:
const check=()=>{
让className_quo;;
//如果this.props.moves是数组,请在中使用而不是
为了(让我加入这个。道具。动作){
if((this.props.moves[i].moveName!=“FirstPassMove”)&&(this.props.moves[i].moveName!=“PassMove”)){
className=“actionBoxButtonGrey”;
}
}
返回类名;
}
按钮
假设你的props.moves
是一个数组,如果这个字符串在props.moves
array中,它将返回true或false,谢谢!使用带有for循环的外部函数的想法确实解决了我的问题
const hasPass = moves.some(({ moveName }) => (
moveName === "FirstPassMove" ||
moveName === "PassMove"
));
props.moves.includes('FirstPassMove')