我有一个对象数组。我试图检查数组中对象的特定值,并仅显示该对象的特定字段。
{
"data" : {
"items" : [ {
"name" : "Basic Week",
"id" : "WK2"
},
{
"name" : "Basic month",
"id" : "WK1"
},
{
"name" : "Basic subscription",
"id" : "11"
},
{
"name" : "all time subscription",
"id" : "11"
}]
}
}
我试图检查包含" subscription"的字符串,所以当我进行检查时,它应该返回2个对象:
{
"name" : "Basic subscription",
"id" : "11"
},
{
"name" : "all time subscription",
"id" : "11"
}
以下是我的工作方式:
$.ajax("/api/1.0/getData",{
success: function (data) {
lists = data.filter(function (item) {
if(item.name.indexOf("subscription")){
$("#some_div").show();
}else{
$("#some_div").hide();}
});
}
});
HTML:
<input type="text" id="some_div" style="display:none;"/>
但是在上面的例子中它显示了所有对象的div
,其中我想仅显示包含字符串&#34; subscription&#34;的值的div。
EDIT --------
$.ajax("/api/1.0/getData",{
success: function (data) {
lists = data.data.items.filter(function (item) {
if(item.name.indexOf("subscription")> -1){
$("#some_div").show();
}else{
$("#some_div").hide();}
});
}
});
上面编辑的代码仍然隐藏了id =&#34; some_div&#34;对于所有对象。
答案 0 :(得分:-1)
var temp = {
"data" : {
"items" : [ {
"name" : "Basic Week",
"id" : "WK2"
},
{
"name" : "Basic month",
"id" : "WK1"
},
{
"name" : "Basic subscription",
"id" : "11"
},
{
"name" : "all time subscription",
"id" : "11"
}]
}
};
console.log($.grep(temp.data.items, function(element){
return element.name.indexOf('subscription') > -1;
}));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:-3)
由于您尝试在items数组中搜索,因此成功回调中的数据变量不是您应该过滤的数组。
考虑到对象的结构,您应该通过:data.data.items。
访问该数组所以,试着把它放在你的成功函数中:
success: function (data) {
data.data.items.forEach( function (item) {
if (item.nome.contains("subscription")) {
$('#some_div').show();
} else {
$('#some_div').hide();
}
});
}
- 编辑
您还需要HTML元素的不同ID属性。
像这样:
<input type="text" id="some_div_0" style="display:none;"/>
<input type="text" id="some_div_1" style="display:none;"/>
<input type="text" id="some_div_2" style="display:none;"/>
<input type="text" id="some_div_3" style="display:none;"/>
然后你应该在数组中使用对象的某些属性来显示或隐藏每个属性。
这里,我使用数组中对象的位置来显示或隐藏对应的HTML元素:
success: function (data) {
data.data.items.forEach( function (index, item) {
if (item.nome.contains("subscription")) {
$('#some_div_' + index).show();
} else {
$('#some_div_' + index).hide();
}
});
}