javascript - 无法比较 JSON 对象值(相同的对象值,从 0 到 n)
问题描述
拥有一个 JSON 对象并包含货币值列表。如果所有货币都不相同,我需要进行“数据不匹配”之类的验证,所有相同的货币都需要进行剩余的验证(其他部分)。我尝试使用以下代码,但比较失败。
Ex:
'[{"currency":"EUR"},{"currency":"EUR"},{"currency":"USD"}]'; // data mismatches
'[{"currency":"EUR"},{"currency":"EUR"},{"currency":"EUR"}]'; // data matches
'[{"currency":"USD"},{"currency":"INR"},{"currency":"EUR"}]'; // data mismatches
$(document).ready(function(){
var text = '[{"currency":"EUR"},{"currency":"EUR"},{"currency":"USD"}]';
obj = JSON.parse(text);
for (var i = 0; i < obj.length; i++) {
if (obj[0].currency != obj[i].currency) {
alert("Data mismatched");
} else {
alert("Data matched");
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
解决方案
为此,您可以使用该every()
方法确保currency
对象中的所有属性都相同:
let checkCurrencies = (arr) => arr.every(item => item.currency === arr[0].currency);
let invalidArr = JSON.parse('[{"currency":"EUR"},{"currency":"EUR"},{"currency":"USD"}]');
console.log(checkCurrencies(invalidArr)); // = false
let validArr = JSON.parse('[{"currency":"EUR"},{"currency":"EUR"},{"currency":"EUR"}]');
console.log(checkCurrencies(validArr)); // = true
推荐阅读
- vba - 循环错误(在错误继续下一步 + 如果 Err.Number > 0 然后在 VBA 中)
- node.js - 如何为两种不同的用户类型编码登录(护照)身份验证?节点.js
- html - 如何在引导卡中隐藏图像的顶部和底部
- python - Span 类中的 Python 美丽汤刮文字
- javascript - Javascript 按两个属性对 JSON 对象进行分组并计数
- ios - 组件卸载时标记被删除(仅 iOS 上的问题) react-native-maps
- java - 为什么我的字符串距离总是5?
- asynchronous - 异步函数返回一个 Pending Promise
- xcode - 如何摆脱 MacOS 中自动添加的菜单项?
- python - 点击这么多次后,Jupyter 没有从 anaconda 导航器启动,我收到了这个错误