2016-07-04 2 views
-1

У меня есть массив, и массив выглядит так, я хочу знать о том, что NewsType = "Int" включен в массив.Array содержит не записывает

массив - это NewsTypeArray.

Когда я отладки в firebug.array выглядит так,

0 Object { NewsType="Local"} 
1 Object { NewsType="Int"} 

var InternationalNewsfound = $.inArray("Int", NewsTypeArray) > -1; 

Но InternationalNewsfound это показывает мне ложь.

+5

Это потому, что вы сравниваете объект со строкой. –

+3

Пожалуйста, не помещайте метки. Это не имеет ничего общего с [тегом: C#] или [тегом: asp.net-mvc]. –

+1

Используйте '$ .grep()' для проверки свойств объекта. –

ответ

4

Используйте фильтр с JQuery .grep(),

var NewsTypeArray = [{"NewsType": "Local"}, {"NewsType": "Int"}]; 
 

 
var InternationalNewsfound = $.grep(NewsTypeArray, function(obj) { 
 
           return obj.NewsType === "Int"; 
 
          }).length > 0; 
 
console.log(InternationalNewsfound);
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>

* Примечание: В то время как раз .length поможет вам проверить truthiness вы могли использовать .length > 0 для флага.

2

Вы ищете массив объектов, но ваш поиск значение является строкой ("Int"). inArray не поможет здесь.

ES5-х Array#some бы (и это может быть подкладками, если вам необходимо поддерживать устаревшие браузеры, такие как IE8):

var NewsTypeArray = [{"NewsType": "Local"}, {"NewsType": "Int"}]; 
 

 
var InternationalNewsfound = NewsTypeArray.some(function(e) { 
 
    return e.NewsType === "Int"; 
 
}); 
 
console.log(InternationalNewsfound);

Array#some вызывает функцию обратного вызова один раз для каждого элемента массива Если callba. ck возвращает истинное значение, Array#some останавливается и возвращается true. Если Array#some закончилось с обратным вызовом, никогда не вернувшим правдивое значение, оно возвращает false.

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