1

我正在研究 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);
    }
});

如何查找列表中存在的元素?

4

5 回答 5

1
jQuery.inArray(r.id , threadList); //give 0 to any positive number if exist otherwise give -1

引用数组

于 2013-08-27T08:42:41.260 回答
1

在现代浏览器中,您可以filter使用[].

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 小提琴:http: //jsfiddle.net/7vTWj/

于 2013-08-27T08:44:53.630 回答
0

使用indexOf()

if (threadList.indexOf(r.id) != -1)

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

if ($.inArray(r.id, threadList) != -1)
于 2013-08-27T08:42:37.723 回答
0

试试这个:

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

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

于 2013-08-27T08:43:25.713 回答
0

你可以简单地使用

if ( $.inArray(r.id, threadList ) != 1 )
于 2013-08-27T09:04:34.183 回答