检查JSON对象中是否存在单击的值

时间:2014-05-19 10:29:28

标签: javascript jquery json

我正在创建一个函数,用于检查是否存在JSON列表中打印的值。所以如果我例如点击值" 1"它将获取存储在JSON列表中该值的对象。在下面的示例中,我应该使用'标题来获取json-object:" Test2"等等。

    var testInfo= {
    test: [
        {
            title: "Test1",
            image: "..",
            info: "Test1",
            price: 100
        }, {
            title: "Test2",
            image: "..",
            info: "Test2",
            price: 100
        }, {
            title: "Test3",
            image: "..",
            info: "Test3",
            price: 100
        }, {
            title: "Test4",
            image: "..",
            info: "Test4",
            price: 100
        } 
    ]   
}

现在我有这个用来调用函数检查值是否存在。

$("#test" + [i]).append('<div id="testtest"><img src=".." id="testT" onClick="writeOutJson('+ [i] +')"/></div>');



function writeOutJson(id){
    var test = testInfo.test;
    if(id == WHAT SHOULD I WRITE HER TO CHECK IF THE VALUE EXIST?){
        // Some code to print out
    }
}

如果我写if(id == 1)然后点击id为1的那个函数,该函数有效。但我需要能够检查所有值。因此,如果我点击ID为4的那个,它将打印出以&#34; Title:Test 4&#34;开头的那个。希望你明白我想做什么。

4 个答案:

答案 0 :(得分:0)

您可以使用.grep()

  

查找满足过滤函数的数组元素。原始数组不受影响。

检查值的代码存在

var arr = jQuery.grep(arr, function( value, index ) {
  return value.title == "Test" + id; 
});
var valueExists = arr.length > 0; 

答案 1 :(得分:0)

我实际上通过在之前添加for循环来实现它:

for( i = 0; i < test.length; i++){
    if(id == [i]){
    }
}

不知道这是否是最好的方法,但我得到了我想要的结果。

答案 2 :(得分:0)

您可以试用$.inArray()

 if($.inArray(id, test) !== -1){

答案 3 :(得分:0)

我建议迭代数组并比较这样的字符串:

function writeOutJson(id) {
    var test = testInfo.test;
    for(var i = 0; i < test.length; i++) {
         if(test[i].info == ("Test" + id)) {
             // Some code to print out
             break;
         }
    }
}

另外,我不会像你那样创建div(在html中使用onClick标记)。而是以某种方式使用jQuery .click()方法:

$("#test" + [i]).append($('<div id="testtest"><img src=".." id="testT"/></div>').click(function() {
     writeOutJson(i);
}));