前言 作为一个资深的前端 各种数组的操作(包括数组对象的操作)非常的频繁 在加上各种 es5+的新方法 更是好用
1. 关于一个程序员的表单 突然在某个群里看到 程序猿给妹纸写一个假吧意思很浪漫的 颜色随机的代码 求优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var strs = '' for (var i = 1 ; i <= 952 ; i++) { strs += `,想你的第${i} 天` } var style = []for (var i = 1 ; i <= 952 ; i++) { var color = '' , colorStr = 'abcdef1234567890' .split('' ) for (var j = 0 ; j < 6 ; j++) { color += colorStr[Math .floor(Math .random() * 16 )] } style.push(`color:#${color} ` ) } var newstrs = strs.split(',' ).map(item => { return `%c${item} ` }) console .log(`%c${newstrs} ` , ...style)
然后人家一行代码,我就恶补了好多知识点,阿西吧
1 2 3 4 5 6 7 8 9 10 11 a = new Array (951 ).fill() console .log( a.map((_, i ) => `%c想你的${i + 1 } 天` ).join(', ' ), ...a.map( _ => 'color:#' + Math .random() .toString(16 ) .substr(2 , 6 ) ) )
然后大佬们开始各种秀,作为小白的我已经悄咪咪的拿小本本记下来了
1 2 3 4 5 6 7 8 9 10 11 new Array (951 ).fill().map((item, i ) => `想你的${i} 天` )Array .from({ length : 100 }).map((item, i ) => `想你的${i + 1 } 天` )Array .from({length : 10 }).map((_,i ) => i) Array .from(Array (10 ).keys()) [...Array(10 ).keys()] Array (5 ).fill().map(new Function ().call, Number )
2. Array.fill() 具体地址 MDN Array.fill
1 2 3 4 5 6 7 8 9 10 Array .fill(value, [start, end]) [(1 , 2 , 3 , 4 , 5 )].fill(0 , 2 , 4 ) new Array (5 ).fill()
3. Array.from() 具体地址 MDN Array.from
1 2 3 4 5 6 7 8 9 10 11 12 Array .from(arrayLike, [mapFn, thisArg]) Array .from([1 , 2 , 3 , 4 , 5 ], x => x * x) Array .from({ length : 5 }, (_, i) => i + 1 ) Array .from(new Set ([1 , 2 , 3 , 4 , 2 , 5 , 6 , 3 , 6 ]))
4. Array.reduce() 具体地址 MDN Array.reduce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Array .reduce(callback, [initValue]) [1 , 2 , 3 , 4 , 5 ].reduce(function (prev, current, index, array ) { return prev + current })
| prev | current | index | array |返回值 | | 1(数组第一个值)| 2(数组第二个值) | 1(无初始值为 1) | [1,2,3,4,5] |3 | | 3 | 3 | 2 | [1,2,3,4,5] |6 | | 6 | 4 | 3 | [1,2,3,4,5] |10 | | 10 | 5 | 4 | [1,2,3,4,5] |15 |
1 2 3 [1 , 2 , 3 , 4 , 5 ].reduce(function (prev, current, index, array ) { return prev + current },10 )
| prev | current | index | array |返回值 | | 10(初始值) | 1(数组第一个值) | 0(有初始值为 0)| [1,2,3,4,5] |11 | | 11 | 2 | 1 | [1,2,3,4,5] |13 | | 13 | 3 | 2 | [1,2,3,4,5] |6 | | 16 | 4 | 3 | [1,2,3,4,5] |20 | | 20 | 5 | 4 | [1,2,3,4,5] |55 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [1 ,2 ,3 ,4 ,5 ].reduce((a,b ) => a+b) [[1 ,2 ],[3 ,4 ],[5 ,6 ]].reduce((a,b ) => a.concat(b),[]) [1 , 2 , 3 , 1 , 2 , 3 , 4 ].reduce((items, item ) => { if (item in items){ items[item]++; }else { items[item] = 1 ; } return items; },{}) [1 ,2 ,3 ,4 ,3 ,4 ,5 ,2 ].reduce((init,current )=> { if (init.length === 0 || init.indexOf(current) === -1 ){ init.push(current) } return init },[]) [1 ,2 ,3 ,4 ,3 ,4 ,5 ,2 ].sort().reduce((init,current )=> { if (init.length === 0 || init[init.length -1 ] !=== current){ init.push(current) } return init },[])
5.常用的各种操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 [{ select : true , value : 1 },{ select : false , value : 2 },{ select : true , value : 3 }] .filter(item => item.select).map(item => item.value) function test (arr ) { var newArr = [] arr.map(item => { if (item.select) { newArr.push(item.value) } }) return newArr } var excelJson = (this .uploadPersonStatus = excelJson.map(v => { return { status: '待上传' , ...v } })) Array .from(new Set (arr))[...new Set (arr)] function unique (arr ) { if (!Array .isArray(arr)){ console .log('type error' ) return false } arr.reduce((init,current ) => { if (init.length === 0 || init.indexOf(current) === -1 ){ init.push(current) } return pre },[]) } function unique (arr ) { if (!Array .isArray(arr)){ return false } var array = [] arr.forEach((item,index ) => { if (array.indexOf(item) === -1 ){ array.push(item) } }) return array } function unique (arr ) { if (!Array .isArray(arr)){ return false } var array = [] arr.forEach((item,index ) => { if (!array.includes(item)){ array.push(item) } }) return array } function unique (arr ) { if (!Array .isArray(arr)){ return false } var arr = arr.sort() var array = [arr[0 ]] for (let i = 1 ,j= arr.length;i<j;i++){ if (arr[i] !== arr[i-1 ]){ array.push(arr[i]) } } return array } function unique (arr ) { if (!Array .isArray(arr)){ return false } return arr.filter((item,index ) => {return arr.indexOf(item,0 ) === index}) } Array .from({ length : 5 }, (_, i) => i + 1 ) Array (5 ).fill().map((item,index ) => index + 1 ) Array .apply(null , {length : 5 }).map(Number .call, Number ) Array .from(Array (5 ).keys()) [...Array(5 ).keys()]