2

我有一个对象数组(JSONized)。像这样的东西:

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 对象,我必须遍历每个对象。

任何帮助将不胜感激。

4

2 回答 2

0

Array.indexOf(what $.inArrayis) 确实需要元素来搜索并返回它的索引。

如果您需要搜索以前不知道的元素,则需要手动循环(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?
于 2012-09-17T08:46:11.897 回答
0

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

    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.
        }
    }
});

我希望我能给你提示。

于 2012-09-17T08:36:32.827 回答