2016-05-10 70 views
-1

我使用过滤器来查找data.it中的id返回对象不是true或false。我如何返回true或false如果val.recoredId === valueId?过滤器返回true或false

var hasMatch = data.filter(function (val) { 
      return (val.recordId === valueId);        
     }); 
+0

目前还不清楚你问什么,但假设'data'是一个数组,请尝试['map'](https://developer.mozilla.org/e n-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)功能。 –

+0

你的问题真的不清楚,请阅读“如何问一个好问题”,然后再试一次...... – areim

+0

是你的问题“我需要将hasMatch设置为true,如果我的数组中有任何对象的id等于valueId “? – nnnnnn

回答

1

使用发现

hasMatch = data.find(function (value) {return value.recordId == valueId }); 
0

试试这个

var hasMatch = data.filter(function (val) { 
    return !!(val.recordId === valueId);        
}); 
+0

'==='运算符已经返回true或false,因此添加'!!'不起任何作用。 – nnnnnn

+0

问题是如何让'hasMatch'变量成为一个布尔值。目前它是一个数组。 – undefined

3

只是检查筛选结果

的长度
var hasMatch = data.filter(function (val) { 
     return (val.recordId === valueId);        
    }).length > 0; 
+1

不需要'> 0' – Tushar

+3

@Tushar当然,它不会工作,因为0是一个虚假的值。但也许为了可读性,并且由于OP似乎对这种过滤方法来说是新的,所以我会保留它。此外,我的答案将与您的答案相同:) – gurvinder372

+0

取决于hasMatch是否需要为实际布尔值 - 如果是,则保持> 0测试。 – nnnnnn