$ .inArray深度搜索

时间:2017-06-08 01:44:06

标签: javascript jquery angularjs

我有一个像这样的json文件:

{
    items: 
        [{  id: 1,
            catalog: {
                supplier: {
                    priority: 1
                },
            }
        },
        {   id: 2,
            catalog: {
                supplier: {
                    priority: 3
                },
            }
        },
        {   id: 3,
            catalog: {
                supplier: {
                    priority: 1
                },
            }
        }]

现在我想使用$ .inArray函数深入搜索items数组。 例如,目录/供应商/优先级为1的所有项目。

这样的事情:

$.inArray(1, data.items(.catalog.supplier.priority)) > -1

我如何完成这种深度搜索?

2 个答案:

答案 0 :(得分:2)

您也可以使用$ .grep:



var data = {
    items: 
        [{  id: 1,
            catalog: {
                supplier: {
                    priority: 1
                },
            }
        },
        {   id: 2,
            catalog: {
                supplier: {
                    priority: 3
                },
            }
        },
        {   id: 3,
            catalog: {
                supplier: {
                    priority: 1
                },
            }
        }]
 };
 
 var arr = jQuery.grep(data.items, function( a ) {
  return a.catalog.supplier.priority >1;
});

console.log(arr);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我有另一个使用Javascript的解决方案。

&#13;
&#13;
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>Demo</title>
  <style>
    div {
      color: blue;
    }

    span {
      color: red;
    }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>

  <span></span>

  <script>
    var arr = {
      items: [{
          id: 1,
          catalog: {
            supplier: {
              priority: 1
            },
          }
        },
        {
          id: 2,
          catalog: {
            supplier: {
              priority: 3
            },
          }
        },
        {
          id: 3,
          catalog: {
            supplier: {
              priority: 1
            },
          }
        }
      ]
    };
    var $spans = $("span");

    var results = [];
    for (var i=0 ; i < arr.items.length ; i++)
    {
        if (arr.items[i].catalog.supplier.priority === 1) {
            results.push(arr.items[i]);
        }
    }

    $spans.eq(0).text(JSON.stringify(results));
  </script>

</body>

</html>
&#13;
&#13;
&#13;