Javascript,将对象与indexOf进行比较
Javascript, Comparing objects with indexOf
我正在尝试将当前对象与即将到来的id数组进行比较。基本思想是,如果该对象与接收的id数组中的任何对象都有相同的想法,那么我希望将selected的布尔值设置为true。我被指示使用一个for each,里面有一个indexOf来检查。这是我的尝试-
angular.forEach($scope.applicationsHere, function(index) {
if(data.applications.indexOf(index.id){
index.selected = true;
}
});
因此,我想做的是将这里的应用程序与data.applications进行比较。如果applicationsHere有一个.id与data.aapplications中的一个数字匹配的对象(data.application只是一个id数组,如[1,2,3]),则将.selected设置为true。
我不相信我的逻辑是正确的,如果有人能帮我纠正,我将不胜感激。谢谢你的阅读!
if(data.applications.indexOf(index.id){ // this is missing a parenthesis
这条线有以下实际行为(感谢@Pointy澄清所有选项)
- 未找到(-1)=
true
- 第一个元素(0)=
false
- 任何其他元素(1到n)=
true
根据您的问题,您的预期输出是:
- 未找到(-1)=
false
- 找到(0到n)=
true
如果你试图使用JS‘0=false
,其他任何东西都是真的,那么你可以这样做:
angular.forEach($scope.applicationsHere, function(index) {
if(data.applications.indexOf(index.id) + 1) {
index.selected = true;
}
});
或者,更短:
angular.forEach($scope.applicationsHere, function(index) {
index.selected = (data.applications.indexOf(index.id) + 1);
});
话虽如此,我仍然建议对indexOf进行实际的>= 0
检查。这样的强制操作会导致其他阅读代码的人感到困惑,因为您使用的是布尔输出的索引。如果你也在寻找紧致性,你可以使用三元运算符。
angular.forEach($scope.applicationsHere, function(index) {
index.selected = data.applications.indexOf(index.id) >= 0 ? true : false;
});
相关文章:
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 反向字符串比较
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 为什么indexOf在这个js代码中不起作用
- 递归深度比较
- Angularjs通过过滤器获取indexOf
- 可以't在JavaScript中比较两个字符串
- indexOf具有2个参数
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何在moment.js中只比较日期
- .indexOf()不适用于特定元音
- Javascript,将对象与indexOf进行比较
- 使用 indexOf() 比较数组中的字符
- Javascript中indexOf()与关联数组的性能比较
- 如何比较单元格在JavaScript表彼此和测试的平等?indexOf是如何工作的
- 比较两个数组的内容;对象#<对象>没有方法'indexOf'&”;