在写这篇文章之前记录下自己的刚发现的图床工具PicGO,在附上github地址用vue和electron开发的桌面应用,之前我一直很苦恼写markdown的时候上传图片很麻烦,现在有了这个工具,一切都变得很easy。
不过这个工具直接下载安装安装不了,我是用scoop安装的,今天还看到了一个界面十分优美得类似markdown的工具,但是奈何电脑直接安装是装不了的,也没有scoop的安装方式,真的好可惜,哪天再去试试。
目前工作中用到reduce的情况也还好,先备着
结合concat实现数组扁平化
1 2 3 4 5 6 7 8
| const arr = [ [1,2], [3,4], [5,6] ].reduce((acc, cur) => { return acc.concat(cur) }, []) console.log(arr)
|
多维数组扁平化
1 2 3 4 5 6 7 8 9 10
| const arr = [ [1, 2,[2, 3, 4, 5]], [3, 4, [2, 3,[2, 3, 1]]], [5, 6] ] const flatten = (arr) => { return arr.reduce((pre, cur) => pre.concat(Array.isArray(cur)? flatten(cur) : cur),[]) } console.log(flatten(arr))
|
数组分块
根据传入限制大小,对数组进行分块,小于限制长度就往里面添加,否则直接将其加入res
1 2 3 4 5 6 7 8 9 10 11 12 13
| const chunk = (arr, size) => { return arr.reduce( (res, cur) => ( res[res.length - 1].length < size ? res[res.length - 1].push(cur) : res.push([cur]), res ), [[]] ); }; const arr4 = [1, 2, 3, 4, 5, 6]; console.log(chunk(arr4, 3)); // [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
|
字符串统计
1 2 3 4 5 6 7 8 9
| const countChar = text => { text = text.split(""); return text.reduce((record, c) => { record[c] = (record[c] || 0) + 1; return record; }, {}); }; const text = "划水水摸鱼鱼"; console.log(countChar(text)); // { '划': 1, '水': 2, '摸': 1, '鱼': 2 }
|