javascript - 将 JavaScript for 循环翻译成 Java 并简化
问题描述
我正在尝试将以下 JavaScript for 循环转换为 Java for 循环。它的作用是当preferenceType 为'Y_N' 然后将preferenceValue 从'Y' 更改为true 并将'N' 更改为false。
var array = [
{ preferenceCode: 'A1', preferenceType: 'Y_N', preferenceValue: 'Y' },
{ preferenceCode: 'A2', preferenceType: 'Y_N', preferenceValue: 'N' },
{ preferenceCode: 'A3', preferenceType: 'DATE', preferenceValue: '15/03/2018' },
{ preferenceCode: 'A4', preferenceType: 'Y_N', preferenceValue: 'Y' }
];
for(var i = 0; i < array.length; i++) {
if(array[i].preferenceType === 'Y_N') {
array[i].preferenceValue = (array[i].preferenceValue === 'Y');
}
}
console.log(array);
我试了一下,但我的 Java for 循环看起来庞大且过于复杂(至少 cp.setPreferenceValue 位)。有没有办法简化它?
CompanyPreference[] companyPreferences = returnedPreferencesFromDatabase;
for(CompanyPreference cp : companyPreferences) {
if(cp.getPreferenceType().equals("Y_N")) {
if(cp.getPreferenceValue().equals("Y")) {
cp.setPreferenceValue(true);
} else {
cp.setPreferenceValue(false);
}
}
}
解决方案
你可以使用
cp.setPreferenceValue(cp.getPreferenceValue().equals("Y"));
类似于 JS。如果首选项值需要一个字符串,您可以将布尔值转换为字符串,如下所示:
String.valueOf(cp.getPreferenceValue().equals("Y"))
此外,为了使.equals
比较为空安全(getPreferenceValue()
可以返回空),你可能应该去
"Y".equals(cp.getPreferenceValue())
preferenceValue
如果previous为null ,它将返回false 。
所以总而言之
cp.setPreferenceValue(String.valueOf("Y".equals(cp.getPreferenceValue())));
推荐阅读
- java - 为什么这个 toArray() 方法不起作用?
- android - 圆形进度指示器忽略宽度/高度属性并且不缩放
- html - 搜索带圆角 HTML/CSS 的输入和列表项
- javascript - typescript - 用 sum 映射数组
- android - Livedata 无法正确更新片段中的数据
- python - 获取 json.load 的值
- node.js - 如何在 nodejs / nextjs api 处理程序中确定 http 与 https
- python - 使用 discord.py 从 ping 中获取用户对象
- qt - 如何将代码中的插槽与主窗口中的 QWidget 链接
- r - 将函数强制转换为表达式?