javascript - jQuery : how to switch case when requesting JSON info

标签 javascript jquery json

我对 jQuery(以及一般的 javascript!)完全是个新手,所以请记住这一点,请仁慈一点! :)

我正在尝试从 JSON 数据库中提取信息,为此我创建了一个搜索框,并设法找到了一个用于请求数据的解决方案,如果我输入确切的内容,该解决方案似乎可以完美运行我在寻找。但显然我希望拥有它,这样用户就不需要担心大小写匹配。

我认为最明智的做法是使用某种模糊搜索,但到目前为止,我的努力已经得到了准确的结果!

这是提取数据的函数:

function getObjects(obj, key, val) {
    var objects = [];
    for (var i in obj) {
        if (!obj.hasOwnProperty(i)) continue;
        if (typeof obj[i] == 'object') {
            objects = objects.concat(getObjects(obj[i], key, val));
        } else if (i == key && obj[key] == val) {
            objects.push(obj);
        }
    }
    return objects;
}

这是我尝试处理该信息的噩梦:

$.getJSON("json/AllSets.json",function(hearthStoneData){
		$('.submit').click(function(){
			var searchValue = $('#name').val();
			var inputValue = searchValue.toUpperCase();
			var returnValue = getObjects(hearthStoneData, "name", searchValue);
			var outputValue = returnValue.toString();
			console.log(outputValue);
		});
	});

有人对我哪里出错有任何建议吗?我认为我已经偏离了最后一部分中所有变量的常规路径,我试图将用户输入和返回的数据设置为大写,但我认为模糊搜索选项更有意义?

无论如何,我感谢您提供的任何帮助,感谢您花时间阅读我认为是一些非常困惑的代码:P

最佳答案

可能的解决方案是在 val 检查中仅使用小写字母来测试匹配:

function getObjects(obj, key, val) {
    var objects = [];
    for (var i in obj) {
        if (!obj.hasOwnProperty(i)) continue;
        if (typeof obj[i] == 'object') {
            objects = objects.concat(getObjects(obj[i], key, val));
        } else if (i == key && obj[key].toLowerCase() == val.toLowerCase()) {
            objects.push(obj[i]);
        }
    }
    return objects;
}

//编辑以包含 Harvtronix 的输入。

关于javascript - jQuery : how to switch case when requesting JSON info,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615766/

相关文章:

javascript - 在 React 中访问 API JSON 数据

javascript - HTML 页面自动重新加载

jQuery:mouseup 和 mousedown 单击处理程序

json - 尝试使用 r 中的 jsonlite 将数据框转换为分层 json 数组

php - 当来自 URL 的数据很小时,JSON 对象为 NULL?

javascript - 如何最好地检测我的网站是否通过移动设备访问

javascript - 多个条件的单一正则表达式模式

javascript - ng 风格间歇性工作

javascript - AngularJS : eventRender function is executing so many times in full calendar

json - 二郎 : Tuple List into JSON