由于项目需要,我在npm找到React-Native-picker这个开源的组件,API简单易懂,可以支持省市级的选择,已经日期选择和时分秒的选择,应该满足我大部分的需要,而且是支持android和Ios的,目前在开发阶段,还没有真机调试,如果有坑我会记录下来的!
但是在使用的过程中,遇到了一些问题,就是我传递 pickerData?的时候出现了问题,拼错了数据,搞了一个小时才拼对它的数据结构,小弟数据结构还是很菜!我像贡献点code出来但是又觉得自己写的很烂,希望有人可以指点下!优化下我的code,我就当学习了!
需求是三联选择
pickerData? = [?
????{
????????a :[?
????????????{
????????????????A1 :[ 1 ,2 ,3 ,4 ]????
????????????} ,
????????????{
????????????????A2 :[ 5 ,6 ,7 ,8 ]????
????????????} ,
????????????{
????????????????A3 :[ 9 ,10 ,11 ,12 ]????
????????????}
????????]
????}?
]
外层是一个Array,然后里面是一个Object,Object中 key 对应的 value 又是一个Array,然后Array里面又是一个Object,Object里面又是一个 key - value(Array)!!!!? 我的天!我当时有点懵!? 然后就开始我的code i~ n~g? 然后写完之后,测试通过!现在分享下!
const getDateList = () => {
? let dataList = [],??
? ? wapLayer = {},?
? ? mouthList = [],
? ? yList = [],
? ? DayArrayList = [],
? ? DayArrayLayer = {},
? ? mouthLayer = [];
? //当前日期减去18,直接展示成年后可选择的年份
? let licitYear = new Date().getFullYear() - 18;
? for (let i = licitYear; i > 1900; i--) {
? ? yList.push(i);
? }
? yList.map(function(value) {
? ? for (let k = 0; k < 12; k++) {
? ? ? mouthList.push(k);
? ? ? if (mouthList.length == 12) {
? ? ? ? mouthList.map(function(values) {
? ? ? ? ? let dayNumber = getDayNumber(value, values + 1); //传入当前年和当前月,获取当前月天数
? ? ? ? ? for (let j = 0; j < dayNumber; j++) {
? ? ? ? ? ? DayArrayList.push(j + 1);
? ? ? ? ? }
? ? ? ? ? DayArrayLayer[values + 1] = DayArrayList;
? ? ? ? ? mouthLayer.push(DayArrayLayer);
? ? ? ? ? wapLayer[value] = mouthLayer;
? ? ? ? ? mouthList = [];
? ? ? ? ? DayArrayList = [];
? ? ? ? ? DayArrayLayer = {};
? ? ? ? });
? ? ? }
? ? }
? ? dataList.push(wapLayer);
? ? wapLayer = {};
? ? mouthLayer = [];
? });
? return dataList;
};
写完之后发现代码会有很多优化地方,包括逻辑!? 特意po上来让大家帮我优化下!虚心学习!不要吝啬你的code!Hahaha~