数组包含不捕获

时间:2016-07-04 07:05:54

标签: javascript jquery arrays

我有一个数组和数组看起来像这样,我想知道数组中包含的是NewsType =“Int”。

数组是NewsTypeArray。

当我在firebug.array中调试时看起来像这样,

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

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

但是 InternationalNewsfound让我觉得虚假。

2 个答案:

答案 0 :(得分: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可以帮助您检查真实性,但您仍然可以使用.length > 0作为标记。

答案 1 :(得分: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为数组中的每个条目调用一次回调。如果回调返回真值,Array#some会停止并返回true。如果Array#some用尽了回调从未返回真值的条目,则返回false