2016-05-10 2 views
-1

Я использую фильтр для поиска id в data.it возвращать объект не true или false. как я могу вернуть true или false, если val.recoredId === valueId?filter return 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

@ Тушар уверен, он будет работать без этого, так как 0 - значение ложности. Но, возможно, для удобства чтения, и поскольку OP, похоже, новичок в этом методе фильтрации, я бы сохранил его. Кроме того, тогда мой ответ станет идентичным вашему :) – gurvinder372

+0

Зависит от того, должно ли hasMatch быть фактическим логическим значением - если да, то сохраняйте тест> 0. – nnnnnn

Смежные вопросы