我有一个像这样的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
我如何完成这种深度搜索?
答案 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;
答案 1 :(得分:0)
我有另一个使用Javascript的解决方案。
<!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;