我正在创建一个函数,用于检查是否存在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;开头的那个。希望你明白我想做什么。
答案 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);
}));