Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 在Json对象中搜索元素_Javascript_Jquery_Arrays_Json_Indexing - Fatal编程技术网

Javascript 在Json对象中搜索元素

Javascript 在Json对象中搜索元素,javascript,jquery,arrays,json,indexing,Javascript,Jquery,Arrays,Json,Indexing,我有一个对象数组。大概是这样的: 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.co

我有一个对象数组。大概是这样的:

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


任何帮助都将不胜感激

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

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

我希望我能给你一个暗示

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

    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.
        }
    }
});
我希望我能给你一个暗示

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

如果需要搜索以前不知道的元素,则需要手动循环Libs,如下划线have helpers:

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?
$.inArray是什么,需要元素来搜索并返回其索引

如果需要搜索以前不知道的元素,则需要手动循环Libs,如下划线have helpers:

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?

谢谢你,伙计。已设法解决此问题。函数popUpVideoIndexclipBinItemId{var itemIndex=-1;$。eachpopUpVideoList,函数i,v{if v.ClipId==clipBinItemId{itemIndex=i;return itemIndex;}};return itemIndex;}这不会处理整个循环,而是循环,直到符合条件为止。我的JSOn对象不是很小,但现在可以这样做了。非常感谢你的帮助:干杯非常感谢你的朋友。已设法解决此问题。函数popUpVideoIndexclipBinItemId{var itemIndex=-1;$。eachpopUpVideoList,函数i,v{if v.ClipId==clipBinItemId{itemIndex=i;return itemIndex;}};return itemIndex;}这不会处理整个循环,而是循环,直到符合条件为止。我的JSOn对象不是很小,但现在可以这样做了。非常感谢你的帮助:干杯