javascript搜索json对象

时间:2015-05-12 00:03:37

标签: javascript json search

我正在尝试在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对象中搜索的指针吗?还有其他办法吗?

2 个答案:

答案 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
}