我想从javascript中json对象中存储的数组中搜索用户关键字
这是输出:我想从javascript中json对象中存储的数组中搜索用户关键字,javascript,json,Javascript,Json,这是输出: [{"houseName":"a","houseType":"b","houseFloors":"c","houselocation":"d"},{"houseName":"p","houseType":"q","houseFloors":"r","houselocation":"s"}] 我的代码如下: <html lang> <head> <title>JavaScript</title> </head> <b
[{"houseName":"a","houseType":"b","houseFloors":"c","houselocation":"d"},{"houseName":"p","houseType":"q","houseFloors":"r","houselocation":"s"}]
我的代码如下:
<html lang>
<head>
<title>JavaScript</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label>House Name:
<input type='text' name='houseName' id='houseName' placeholder="House Name">
</label>
<br>
<br>
<label>House type:
<input type='text' name='houseType' id='houseType' placeholder="House type">
</label>
<br>
<br>
<label>House Floors:
<input type='text' name='houseFloors' id='houseFloors' placeholder="House Floors">
</label>
<br>
<br>
<label>House Location:
<input type='text' name='houselocation' id='houselocation' placeholder="House Location">
</label>
<br>
<br>
<button type="button" id="add">Add Details</button>
<button type="button" id="print">Show</button>
<pre></pre>
<script>
var list = [],
$ins = $('#houseName, #houseType, #houseFloors, #houselocation'),
var counter = {
houseName: {},
houseType: {},
houseFloors: {},
houselocation: {}
};
$('#add').click(function() {
var obj = {},
valid = true;
$ins.each(function() {
var val = this.value;
if (val) {
obj[this.id] = val;
} else {
alert(" Cannot be blank");
return false;
}
});
if (valid) {
list.push(obj);
$ins.val('');
}
});
$('#print').click(function() {
$('pre').text(JSON.stringify(list) + '\n\n');
})
</script>
</body>
</html>
JavaScript
房屋名称:
房屋类型:
房屋楼层:
房屋位置:
添加详细信息
显示
变量列表=[],
$ins=$(“#房屋名称,#房屋类型,#房屋楼层,#房屋位置”),
变量计数器={
房屋名称:{},
房屋类型:{},
楼层:{},
房屋位置:{}
};
$('#添加')。单击(函数(){
var obj={},
有效=真;
$ins.each(函数(){
var val=该值;
if(val){
obj[this.id]=val;
}否则{
警报(“不能为空”);
返回false;
}
});
如果(有效){
列表推送(obj);
$ins.val(“”);
}
});
$(“#打印”)。单击(函数(){
$('pre').text(JSON.stringify(list)+'\n\n');
})
现在我想要的是,当用户提供一个关键字时,我想通过javascript中的输出搜索该特定关键字,并返回该特定对象的完整细节
例如:如果关键字是:a
输出应为:
[{“houseName”:“a”,“houseType”:“b”,“houseFloors”:“c”,“houselocation”:“d”}]下面的代码应该有效
var keyword = "a";
var result = output.filter( function(obj){
return Object.keys(obj).filter( function(key){
return obj[ key ].indexOf( keyword ) != -1;
}).length > 0;
});
//now result has the filtered array
console.log( result );
var arr=[{“houseName”:“a”,“houseType”:“b”,“houselows”:“c”,“houselocation”:“d”},{“houseName”:“p”,“houseType”:“q”,“houselows”:“r”,“houselocation”:“s”}]
函数查询对象(道具、键){
这是什么;
对于(变量i=0,len=arr.length;i
对于一般解决方案,只需在输出上进行筛选
数组即可
演示
var输出=[{“houseName”:“a”,“houseType”:“b”,“houselows”:“c”,“houselocation”:“d”},{“houseName”:“p”,“houseType”:“q”,“houselows”:“r”,“houselocation”:“s”}];
var关键字=“a”;
var结果=输出过滤器(函数(obj){
返回对象.键(obj).过滤器(函数(键){
返回obj[key].indexOf(关键字)!=-1;
}).长度>0;
});
//现在,结果是过滤后的数组
控制台日志(结果)代码>如果我从搜索框中输入一个关键字,它会work@gaan10如果您可以将该文本框值放入关键字
,则它将起作用。这是我的修改。我正在从搜索发送输入。函数sendToPage()@gaan10您是否从sendToPage()
方法返回结果?否则,您将只需要在该方法内检查其值。@gaan10那么它应该可以工作。这之后你面临什么问题?我试过了,但没有成功。我和别人共用一个冰箱。你能不能看一下……我想根据用户输入进行搜索。搜索的确切位置?你必须先有一些数据是的,当你输入数据并单击“添加详细信息”时,它存储在一个对象中。当你单击“显示”时,它会逐个显示你输入的数据。因此我需要从这里搜索。
var keyword = "a";
var result = output.filter( function(obj){
return Object.keys(obj).filter( function(key){
return obj[ key ].indexOf( keyword ) != -1;
}).length > 0;
});
//now result has the filtered array
console.log( result );