我想从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 );