簡體   English   中英

Jquery或Javascript檢查對象是否存在於Json對象的集合中

[英]Jquery or Javascript check if object exists in collection of Json Objects

給出像這樣的json字符串:

[{"id":28,"Title":"Sweden"},{"id":56,"Title":"USA"},{"id":89,"Title":"England"}]

我需要檢查一個對象是否存在,檢查所有字段,意思是:

{"id":28,"Title":"Sweden"} => exists
{"id":29,"Title":"Sweden"} => doesn't exist

要么

{"id":28,"Title":"Sweden"} => exists
{"id":28,"Title":"Sweden2"} => doesn't exist

集合可以包含任意數量的對象,對象將始終具有相同數量的屬性(id,title)或(id,title,firstName)等。

另外,為了檢查現有對象,是否需要將字符串解析為json對象集合?

我試過這個:

$.map(val, function (obj) {
    if (obj === val)
        alert('in');
    return obj; // or return obj.name, whatever.
});

也許是這樣的?

    function exists(obj, objs)
    {
        var objStr = JSON.stringify(obj);

        for(var i=0;i<objs.length; i++)
        {
            if(JSON.stringify(objs[i]) == objStr)
            {
                return 1;
            }
        }

        return 0;
    }


    /** some tests **/
    var x = [{"id":28,"Title":"Sweden"},{"id":56,"Title":"USA"},{"id":89,"Title":"England"}];
    var has = {"id":28,"Title":"Sweden"};
    var not = {"id":28,"Title":"Sweden2"};

    /* alerts yes */
    if(exists(has, x)) alert('yes');
    else alert('no');

    /* alerts no */
    if(exists(not, x)) alert('yes');
    else alert('no');

http://jsfiddle.net/zdhyf/

假設你需要一個通用的解決方案,而不僅僅是這個例子,你可以檢查lodash( http://lodash.com ),它是這種操作的高性能庫,特別是isEqual函數( http://lodash.com/) docs#isEqual )。

或者,您可以擴展上面的代碼以使用任意值進行檢查。

如果您確定集合中對象的屬性始終與您要查找的對象的順序相同,則可以搜索子字符串而不是檢查對象的存在:

var json = '[{"id":28,"Title":"Sweden"},{"id":56,"Title":"USA"},{"id":89,"Title":"England"}]',
obj1 = {"id":28,"Title":"Sweden"},
obj2 = {"id":29,"Title":"Sweden"};

alert(json.indexOf(JSON.stringify(obj1)) >= 0 ? 'Yes' : 'No'); // Yes
alert(json.indexOf(JSON.stringify(obj2)) >= 0 ? 'Yes' : 'No'); // No

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM