javascript - 在 Javascript if 语句中动态生成多个条件
问题描述
在我的 React 组件的 .map() 函数中,我有一个 if 语句,我需要包含多个由 || 分隔的条件 操作员。问题是,this.state.insights
是一个由不同长度组成的数组,具体取决于从我的服务器中提取的 json 数据。
document.getElementById("adMaskid" + this.props.id).innerHTML = audio_data
.map((sample, i) => {
let rectOpacity = 1
if (i > this.state.insights[0].start && i < this.state.insights[0].end || /
i > this.state.insights[1].start && i < this.state.insights[1].end) {
rectOpacity = 1;
} else {
rectOpacity = 0;
};
let sampleWidth = 100.0 / audio_data.length;
let sampleHeight = sample * 50.0;
return `<rect style="transform: scaleY(.9); opacity: ${rectOpacity};"
x=${sampleWidth * i}
y=${(25 - sampleHeight)}
width=${sampleWidth}
height=${sampleHeight} />`
)}
我完全不知道如何克服这个障碍。例如,如果 this.state.insights
数组由 3 个值组成,那么我将如何动态创建 if 语句以反映看起来像 -
if (i > this.state.insights[0].start && i < this.state.insights[0].end || /
i > this.state.insights[1].start && i < this.state.insights[1].end ||
i > this.state.insights[2].start && i < this.state.insights[2].end ||)
无需更改一堆我的底层代码,有没有办法做到这一点?我读过关于使用 eval 语句的信息,但这样做让我希望有一个更好、更安全的解决方案。非常感谢您的任何见解。非常感谢。
解决方案
this.state.insights.some(({ start, end }) => i > start && i < end )
只需迭代insights
数组,根本不需要eval
。
推荐阅读
- java - 如何从 Handler 更改 Activity?
- go - 我如何知道拉取了哪个版本的依赖项?
- vb.net - 从 AnyCPU 更改为 x86 会导致 System.BadImageFormatException 错误
- java - 我可以只使用色板面板吗
- javascript - JavaScript 是否优化了多个纯过滤器/地图/等?
- html - 如何将文本和未排序列表放在同一行
- python - kdims 如何为 geoviews 中的多边形工作?
- java - 如何更改 Recyclerview 所选项目的背景
- c++ - 动态分配内存
- javascript - 创建日期选择器时引导日期选择器设置日期