1.url解析
// 解析一个任意url的所有参数为Object,注意边界条件的处理// {// user: 'anonymous',// id: [123, 456],// city: '北京',// enabled: true// }let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';parseParam(url);function parseParam(url) { let obj let fromUrl = url let fromStr let fromArr let fromObj let result = {} let _key let _val let box let oldVal fromUrl = fromUrl.split("?") fromStr = fromUrl[1] fromArr = fromStr.split("&") fromArr.forEach(function(item, index) { box = item.split("=") _key = box[0] _val = box[1] || true if(result[_key] && result[_key] instanceof Array) { result[_key].push(_val) } else if (result[_key]){ oldVal = Number(result[_key]) result[_key] = [oldVal] result[_key].push(Number(_val)) } else { result[_key] = decodeURI(_val) } }) console.log(result)}2.模板引擎
let template = '我是{{name}}, 年龄{{age}},性别{{sex}}'let data = { name: 'Emma', age: 18}render(template, data)function render (template, data) { let fromTemp = template; let fromData = data; let result let tar let index let reg = /\{\{(\w*)\}\}/g; let resultArr = fromTemp.match(reg) let key for(let i = 0; i < resultArr.length; i++) { key = resultArr[i].slice(2, -2) fromTemp = fromTemp.replace(resultArr[i], fromData[key]) } console.log(fromTemp)}3.字符串查找
function isContain(a, b) { let aLen = a.length let bLen = b.length let aArr = a.split('') let bArr = b.split('') let result = -1 bArr.forEach(function(item, index) { if(aArr[0] == item) { result = index+1; let n = index; for(let i = 1; i < aLen; i++) { n++ aArr[i] == bArr[n] && result != -2 ? result = index+1 : result = -2 } } else { rsult = -1 } }) return result > 0 ? result : result = -1}let printRef = isContain('8', '12345678')console.log(printRef)4.正则,逗号分割
//1234.56 => "1,234.56"function parseMoney(money) { let reg = /(\d)(?=(\d{3})+\.)/g let str = String(money) let result = str.replace(reg, '$1,') console.log(result)}parseMoney(12334565632.98)5.数据绑定
let obj = { key_1: 1, key_2: 2 } function bindData(tar, cb) { let target = tar let keyArr keyArr = Object.keys(target) for(let i = 0; i < keyArr.length; i++) { let _key = keyArr[i] let value = target[_key] Object.defineProperty(target, _key, { get: function() { return value }, set: function(newVal) { if(value != newVal) { value = newVal } cb.call(target, _key) }} ) } } function func(key) { console.log(key + '的值发生改变:' +this[key]) } bindData(obj, func) obj.key_1 = 2;6.数据结构处理
let data = { name: 'jake', child: [ {name: 'jake 1'}, {name: 'jake 2', child: [ {name: 'jake 2-1', child: {name: 'jake 2-1-1'}}, {name: 'jake 2-2'} ]}, {name: 'jake 3', child: {name: 'jake 3-1'}} ]}function findMultiChildPerson(data) { let result = [] let child = data.child let parent = data.name let cbResult if(child && child instanceof Array) { result.push(parent) child.forEach(function(item, index) { cbResult = findMultiChildPerson(item) cbResult ? result = result.concat(cbResult) : false }) } else { return } return result}// findMultiChildPerson(data) console.log(findMultiChildPerson(data))