想搞个 V2 的线下聚会,要收集一整页参与评论的人员(不重复),然后一次 at 完
码农嘛,整天想玩玩自己的代码搞事情
突发奇想搞个小比赛,要求如下:
我自己写一个,抛砖引玉吧
Object.keys($('#Main .box .dark').toArray().reduce(function(obj, c) {
obj['@' + $(c).text()] = 1;
return obj;
}, {})).join('\n')
正在 V2 摸鱼的同学,线上打怪任务来了!
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
1
jera 2018-12-25 15:24:40 +08:00 1
都用 JQuery 了,几千行是有了吧。
|
3
johnnyNg 2018-12-25 15:30:53 +08:00
```javascript
document .querySelectorAll('#Main .box .dark') .map(el => `@${el.innerHtml}`) .join('\n') ``` |
4
yuanfnadi 2018-12-25 15:36:11 +08:00
[...new Set(Array.from(document.querySelectorAll('#Main .box .dark')).map(o=>(`@${o.text}`)))].join("\n")
|
6
johnnyNg 2018-12-25 15:40:43 +08:00
|
7
royzxq 2018-12-25 15:43:58 +08:00
[].slice.call($$('#Main a.dark')).reduce((all, it) => {
if (!all.includes('@' + it.text)) { all.push('@' + it.text) } return all; }, []).join(' '); #4 学习了 |
8
123s 2018-12-25 15:44:49 +08:00
不要 at 我看看
|
9
123s 2018-12-25 15:45:08 +08:00
没有 at 的也会算上啊
|
10
johnnyNg 2018-12-25 15:46:40 +08:00
@yuanfnadi
是的,没有试一下,还忽略了去重 [ ...new Set( [...document.querySelectorAll('#Main .box .dark')].map(el => `@${el.text}`) ) ].join('\n') 你的差不多是最优解了 |
11
wildnode 2018-12-25 15:51:44 +08:00
Chrome 控制台版本,可以省去冗长的 document. querySelectorAll
另外缩减了一下选择器长度,跑了几个帖子貌似没啥问题 2333 [...new Set($$('#Main .dark').map(i => `@${i.text}`))].join('\n') |
12
jydeng 2018-12-25 15:53:08 +08:00
学习了
|
13
no1xsyzy 2018-12-25 16:09:25 +08:00
在 v2 你甚至可以玩 codegolf ……
61 bytes [...new Set($$('#Main .dark').map(e=>"@"+e.text))].join('\n') 注意模板字符串只有在两边都有添加文本的时候更短 |