项目:https://github.com/marioizquierdo/jquery.serializeJSON 下载:jquery.serializeJSON-master jquery.serializeJSON 前端在处理含有大量数据提交的表单时,除了使用Form直接提交刷新页面之外,经常碰到的需求是收集表单信息成数据对象,Ajax提交。 而在处理复杂的表单时,需要一个一个区手动判断处理字段值,显得非常麻烦。接下来介绍的插件将解决这个问题。 使用jquery.serializeJSON,可以在基于jQuery或者Zepto的页面中,调用 .serializeJSON() 方法来序列化form表单的数据成JS对象。 安装 Install with…
December 13, 2017
Javascript: 模糊搜索json,获取key, find in json, fuzzy search in json
直接上代码:
//return an array of objects according to key, value, or key and value matching 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 key matches and value matches or if key matches and value is not passed (eliminating the case where key matches but passed value does not) if (i == key && obj[i] == val || i == key && val == '') { // objects.push(obj); } else if (obj[i] == val && key == ''){ //only add if the object is not already in the array if (objects.lastIndexOf(obj) == -1){ objects.push(obj); } } } return objects; } //return an array of values that match on a certain key function getValues(obj, key) { var objects = []; for (var i in obj) { if (!obj.hasOwnProperty(i)) continue; if (typeof obj[i] == 'object') { objects = objects.concat(getValues(obj[i], key)); } else if (i == key) { objects.push(obj[i]); } } return objects; } //return an array of keys that match on a certain value function getKeys(obj, val) { var objects = []; for (var i in obj) { if (!obj.hasOwnProperty(i)) continue; if (typeof obj[i] == 'object') { objects = objects.concat(getKeys(obj[i], val)); } else if (obj[i] == val) { objects.push(i); } } return objects; } var json = '{"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","ID":"44","str":"SGML","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup"}}}}}'; var js = JSON.parse(json); //example of grabbing objects that match some key and value in JSON console.log(getObjects(js,'ID','SGML')); //returns 1 object where a key names ID has the value SGML //example of grabbing objects that match some key in JSON console.log(getObjects(js,'ID','')); //returns 2 objects since keys with name ID are found in 2 objects //example of grabbing obejcts that match some value in JSON console.log(getObjects(js,'','SGML')); //returns 2 object since 2 obects have keys with the value SGML //example of grabbing objects that match some key in JSON console.log(getObjects(js,'ID','')); //returns 2 objects since keys with name ID are found in 2 objects //example of grabbing values from any key passed in JSON console.log(getValues(js,'ID')); //returns array ["SGML", "44"] //example of grabbing keys by searching via values in JSON console.log(getKeys(js,'SGML')); //returns array ["ID", "SortAs", "Acronym", "str"]
原文: https://gist.github.com/iwek/3924925
上面是严格搜索, 如果要模糊搜索,只要将 else if (obj[i] == val) 改成 else if (obj[i].indexOf(val) > -1) 即可, 即:
//return an array of keys that match on a certain value function getJsonKeys(obj, val) { var objects = []; for (var i in obj) { if (!obj.hasOwnProperty(i)) continue; if (typeof obj[i] == 'object') { objects = objects.concat(getJsonKeys(obj[i], val)); } else if (obj[i].indexOf(val) > -1) { objects.push(i); } } return objects; }
本文: Javascript: 模糊搜索json,获取key, find in json, fuzzy search in json