Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery查找列表中存在的元素_Javascript_Jquery_List - Fatal编程技术网

Javascript 使用jQuery查找列表中存在的元素

Javascript 使用jQuery查找列表中存在的元素,javascript,jquery,list,Javascript,Jquery,List,我基本上都在学习jQuery的基础知识,如果使用Java:p,它本可以很容易地完成 var thread_list = []; var feed_list = []; $.each(json.messages, function(i, m) { if (m.replied_to_id == "") { alert(m.thread_id); thread_list.push(m.thread_id); } }); $.each(json.ref

我基本上都在学习jQuery的基础知识,如果使用Java:p,它本可以很容易地完成

var thread_list = [];
var feed_list = [];

$.each(json.messages, function(i, m) {
    if (m.replied_to_id == "") {
        alert(m.thread_id);
        thread_list.push(m.thread_id);
    }
});

$.each(json.references, function(i, r) {
    if (r.id exists in threadList) {  //how do I do this more effectively?
        feed_list.push(r.url);
    }
});
如何查找列表中存在的元素?

使用
indexOf()

如果您使用的旧浏览器没有
indexOf()
,您可以使用
jQuery.inArray()

参考

尝试以下方法:

$.each(json.references, function(i, r) {
    if (threadlist.indexOf(r)!=-1) {  
        feed_list.push(r.url);
    }
});

在java中,实际上您将为原始json创建一个JSONOBject,然后将json线程列表作为JSONArray获取,然后将其转换为实际数组以进行检查

在现代浏览器中,您可以使用
[]
上的
过滤器
功能

var thread_list = [{id:1},{id:2},{id:3}];
var feed_list = [];

function exists(arr,prop,val){
    var threads = arr.filter(function(e){
        return e[prop] == val;
    });
    return !!threads.length;
}


alert(exists(thread_list, "id", 4)); //returns false
alert(exists(thread_list, "id", 2)); //returns true
JS FIDDLE:

您只需使用

if ( $.inArray(r.id, threadList ) != 1 )

threadList.indexOf(r.id)!=-1
jQuery.inArray()
也可能返回
0
,如果出现
情况,则将对其进行错误处理。因此,只需确保检查它,如-
if(jQuery.inArray(r.id,threadList)!=-1)
no由0给出索引位置,在obse数组索引起始表单0中查看更多详细信息,查看元素是否是第一个元素,使用您的语句将返回0,在
if
条件下将被视为false。你也可以参考相同的链接。他们也特别提到要对照-1进行检查永远不要忘记全能的
(即
;)
$.each(json.references, function(i, r) {
    if (threadlist.indexOf(r)!=-1) {  
        feed_list.push(r.url);
    }
});
var thread_list = [{id:1},{id:2},{id:3}];
var feed_list = [];

function exists(arr,prop,val){
    var threads = arr.filter(function(e){
        return e[prop] == val;
    });
    return !!threads.length;
}


alert(exists(thread_list, "id", 4)); //returns false
alert(exists(thread_list, "id", 2)); //returns true
if ( $.inArray(r.id, threadList ) != 1 )