我正在尝试在json中搜索一个值
<input type="text" id="test" size="21" maxlength="120">
<button onclick="Zoek()" class="btn btn-info btn-block">
tijdelijke zoek knop
</button>
我用它来输入一个值和按钮来调用搜索功能
function Zoek() {
var qeustion = document.getElementById("test").value;
document.getElementById("accordion").innerHTML == "";
var text = '{ "FAQ" : [' +
'{ "vraag":"John" , "antwoord":"Doe" },' +
'{ "vraag":"Anna" , "antwoord":"Smith" },' +
'{ "vraag":"Peter" , "antwoord":"Jones" } ]}';
obj = JSON.parse(text);
for (i = 0; i < text.length; i++) {
if (obj.FAQ[i].vraag == qeustion) //(obj.FAQ[i].getString("vraag").contains(question))
{
document.getElementById("accordion").innerHTML += "<div class='panel panel-default'><div class='panel-heading' role='tab' id='heading" + i + "'><h4 class='panel-title'><a data-toggle='collapse' data-parent='#accordion' href='#" + i + "' aria-expanded='false' aria-controls='" + i + "''>" + obj.FAQ[i].vraag + " </a></h4></div><div id='" + i + "' class='panel-collapse collapse in' role='tabpanel' aria-labelledby='heading" + i + "'><div class='panel-body'> " + obj.FAQ[i].antwoord + "</div></div></div> WOWOWOWOWOWOWOWOWWOWOWOOW";
} else {
document.getElementById("accordion").innerHTML = "No results found"
}
}
}
这是我的搜索功能
所以,让我说我进入约翰,它会对其他人有所帮助,并且不会做if语句,即使我很确定它是正确的
有人能给我一些关于在json对象中搜索的指针吗?还有其他办法吗?
答案 0 :(得分:1)
请参阅附件jsfiddle,了解您的需求,并向您展示您需要做的事情 - https://jsfiddle.net/vuenume2/1/
在循环中有一个break
语句是必不可少的。
如果没有break
语句,那么成功的真正价值只会在下一次迭代时被false覆盖,除了最后可能的凭证,没有“下一次”迭代。
if (obj.FAQ[i].vraag == qeustion)
{
<!-- do stuff -->
break;
} else {
<!-- do other stuff -->
}
此外,如果您还没有这样做,则需要向您的html添加ID为accordion
的div
<div id="accordion"></div>
答案 1 :(得分:0)
使用过滤功能。你在obj中将字符串解析为json所以你可以这样做:
var target = obj.FAQ.filter(function(element){ return element.vraag == qeustion})[0];
if(target == undefined) {
// there is no that object logic
} else {
// there is that object logic
}