【问题标题】:Searching for an element in a Json object在 Json 对象中搜索元素
【发布时间】:2012-09-09 10:42:31
【问题描述】:

我有一个对象数组(JSON 化)。像这样:

popUpList = [{
    "id":1,
    "Name":"My Pop Up",
    "VideoUrl":"www.xyz.com/pqr",
    "AddToBasketUrl":"www.abc.com?addtoBaketid=1",
    "addedToBasket": true
},
{
    "id":2,
    "Name":"My 2nd Pop Up",
    "VideoUrl":"www.xyz.com/mno",
    "AddToBasketUrl":"www.abc.com?addtoBaketid=2",
    "addedToBasket": false
}]

我的情况是可以从弹出窗口或主页添加剪辑。因此,当从页面将某些内容添加到购物篮时,我需要编辑 JSON 对象。

我尝试使用 $.inArray() 和类似的方法。我认为要么我没有以正确的方式做这件事,要么错过了一些东西。或者,这不适用于 JSON 对象,我必须遍历每个对象。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery arrays json indexing


    【解决方案1】:

    Array.indexOf$.inArray 是什么)确实需要该元素来搜索并返回其索引。

    如果你需要搜索一个你以前不知道的元素,你需要手动循环(像Underscore这样的库有帮助器):

    var idToSearchFor = …;
    for (var i=0; i<popUpList.length; i++)
        if (popUpList[i].id == idToSearchFor) {
            // do something
        }
    

    如果您想建立一个索引以更快地访问弹出窗口,您也可以这样做。它还具有明确的优点(每个 id 只有一个元素):

    var popUpsById = {};
    for (var i=0; i<popUpList.length; i++)
        popUpsById[popUpList[i].id] = popUpList[i];
    
    if (idToSearchFor in popUpsById)
        // do something with popUpsById[idToSearchFor]
    else
        // create one?
    

    【讨论】:

    • 非常感谢伙计。设法解决了问题。function popUpVideoIndex(clipBinItemId) { var itemIndex = -1; $.each(popUpVideoList, function (i, v) { if (v.ClipId == clipBinItemId) { itemIndex = i; return itemIndex; } });返回项目索引;这不会处理整个循环,而是循环直到它与条件匹配。我的 JSOn 对象不是很小,但现在可以工作了。非常感谢您的帮助:) 干杯
    【解决方案2】:

    我不太确定您要明确搜索什么,您可以使用以下方法访问对象中的每个值:

        vat id = "1";
    
        // this given example wont work for you bec. of your structure
        // but its all about the idea.
    
        var objectOne = yourJsonObject[id];
    
        // You can also append them
        var myValue = yourJsonObject.address.zip;
    

    在获取的第一个对象的任何其他项目上也是如此。

    为此,我将创建一个如下所示的自定义搜索功能:

    $.each(popUpList, function(i, v) {
        var entryYouWantToFind = "addedToBasket";
            if(v[entryYouWantToFind])
            {
                // do your stuff here.
            }
        }
    });
    

    我希望我能给你提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      相关资源
      最近更新 更多