1.比较版本:用es6中的数组方法somefunction compareVersion() { some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。 some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 注意: some() 不会对空数组进行检测。 注意: some() 不会改变原始数组。 let curVersion = getSystem().SDKVersion.split('.').map( (i) => { console.log(i);//'1' '9' '0' }) console.log("SDKVersion", getSystem().SDKVersion);//SDKVersion 1.9.0 console.log("SDKVersion", getSystem().SDKVersion.split('.'));//['1','9','0'] console.log(curVersion);//[1,9,0] let version = VERSION.split('.').map(i => Number(i)) return !curVersion.some((item, i) => item < version[i])}2.去拿data中的数据:包含app.data,res.data let { missKeyInfo, sid } = app.globalData.userInfo;3.assign()在对象合并和赋值中的应用object.assign(app.globalData.userInfo,this.data.userInfo);4.Object.keys()在赋值中的应用for(var attr of Object.keys(that.data.userInfo)){ (attr!='account')&&(that.data.userInfo[attr]=app.globalData.userInfo[attr])}5.es6的find和findIndex方法 数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。如下[1, 4, -5, 10].find((n) => n < 0) // -5 [1, 5, 10, 15].find(function(value, index, arr) { return value > 9; }) // 10 上面代码中,find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。[1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9; }) // 2 6.if (Version <= '1.6') return Promise.reject('版本过低,不支持此API') if (!isAndroid) return Promise.reject('除安卓外均不支持此方法')7.const modal = weex.requireModule('modal')weex.registerModule('ModalModule', { loading (params) { if (params.show) console.log('%c[ModalModule] loading open', 'color: green;') else console.log('%c[ModalModule] loading close', 'color: green;') }, ...modal})我们对于...modal来进行解析创建一个对象 obj8.try catch的使用方法 aliPay () { try { weex.requireModule('PayModule').invokePaySdk({ type: 'alipay', orderInfo: '123EE456WDE789', sWxAppId: 'null' }, resp => { if (typeof resp === 'string') { this.info = 'string: ' + resp } else { this.info = JSON.stringify(resp) } }) } catch (err) { this.info = 'Error: ' + err } } }9.使用字符串:`非常抱歉,你${payMethod}支付失败,建议你尝试其他支付方式`10.handleCelsiusChange(temperature) { this.setState({scale: 'c', temperature})} 注意temperature,当变量和属性重名时,怎么给对象赋值11.reduce()方法 reduce()方法接收一个函数callbackfn作为累加器(accumulator), 数组中的每个值(从左到右)开始合并,最终为一个值。我:而initialValue作为第一次调用 callbackfn函数的第一个参数我:function callbackfn(preValue,curValue,index,array){} preValue: 上一次调用回调返回的值,或者是提供的初始值(initialValue) curValue: 数组中当前被处理的数组元素 index: 当前数组项在数组中的索引值 array: 调用 reduce()方法的数组 let paramStr = Object.keys(options.params).reduce((acc, key) => `${acc}${key}=${options.params[key]}&`, '?') reduce在拼接路径的时候的用法:'?'作为函数的第二个参数,那么就是以他开头还是累加 acc 是上次的拼接的结果 key是这次的key ${options.params[key]}是这次的值 注意后面的&:每次凭借都是以&结尾的12.以后写函数的时候先考虑传的参数是什么类型,然后给写默认值????function?http?(OPTIONS?=?{})?13.class讲解http://www.cnblogs.com/humin/p/4313807.html14.let users = [...this.state.users, { avatar: '', content: val, username: 'zfpx' }]; 给数组添加元素,展开旧的,加入新的15.res = await axios.get('/user.json') 返回的是请求到的数据 axios.get('/user.json') 返回的是一个promise await 后面如果是一个promise的话,返回的就是promise返回的结果,这里就是数据 这个其实和axios.get('/user.json').then(res => {.........})是一样的,只不过这里是直接拿到了res,可以在下面写应用res了 16.数组扁平化/** * 截取不带参数的路由 * @param {String} str 路由路径 * @return {String} 去掉参数后的路由路径 */const replaceQuery = str => str.replace(/\/:.*/, '');/** * 扁平化数组 * 交给导航栏使用 * @param {Array} options * @return {Array} menu = [ * { * label: '', * path: '', * icon: '', * children: [ * { * label: '', * path: '' * } * ] * } * ] */const createMenus = options => options.map(({ label, path, icon, children }) => { const option = { label, path: replaceQuery(path), icon }; // 地址管理不带二级菜单 if (Array.isArray(children) && !['地址管理', '账户中心'].includes(label)) { return { ...option, children: children.map(({ label, path }) => { return { label, path: replaceQuery(path) }; }), }; } return option; });/** * 扁平化数组 * 交给路由使用 * @param {Array} options */const createRoutes = options => options .reduce((pre, item) => { const { children, label, ...others } = item; if (others.component !== null) { pre.push(others); } if (Array.isArray(children)) { return [...pre, ...createRoutes(children)]; } return pre; }, []) .filter(item => item.path);/** * 扁平化数组 * 交给面包屑使用 * @param {Array} options */const createBreadcrumb = options => options.map(({ label, path, children }) => { if (Array.isArray(children)) { return { label, path: replaceQuery(path), children: createBreadcrumb(children), }; } else { return { label, path: replaceQuery(path) }; } });export { createRoutes, createMenus, createBreadcrumb };17.对于配置常量对象 ,不允许修改且有默认值的 const carTypeDict = { [0]: 'kg_xxmb_1534822754105.png', [1]: 'kg_jb_1534822754199.png', [2]: 'kg_xxxh_1534822754118.png', [4]: 'kg_dxxh_1534822754177.png', [5]: 'kg_ywk_1534822754120.png', [10]: 'kg_xxpb_1534822754105.png', [11]: 'kg_zxpb_1534822754129.png', [12]: 'kg_dxpb_1534822754148.png', }; const handler = { get(target, name) { // use 'jb.png' instead of no picture of carcode return name in target ? target[name] : target[1]; }, set(value) { // can't change element of carType return false; }, }; const carType = new Proxy(carTypeDict, handler); 复制代码