JS無形裝逼,最為致命

megatron發表於2019-04-28

除了三目運算,你還知道其他的裝逼姿勢嗎?留言走你~~

單行簡潔的程式碼很難維護(有時甚至難以理解),但這並不能阻止廣大攻城獅們腦洞,在編寫簡潔的程式碼後獲得一定的滿足感。

以下我最近的一些收藏javascript精簡程式碼集合。它們都可以在你的開發控制檯中執行,你可以從控制檯中檢視執行結果。同時,我希望你能在評論中分享一些自己的藏品!

日曆

建立過去七天的陣列,如果將程式碼中的減號換成加號,你將得到未來7天的陣列集合

// 建立過去七天的陣列
[...Array(7).keys()].map(days => new Date(Date.now() - 86400000 * days));
複製程式碼

生成隨機ID

在原型設計時經常使用的建立ID功能。但是我在實際專案中看到有人使用它。其實這並不安全

// 生成長度為11的隨機字母數字字串
Math.random().toString(36).substring(2);
// hg7znok52x
複製程式碼

獲取URL的查詢引數

這個獲取URL的查詢引數程式碼,是我見過最精簡的QAQ

?foo=bar&baz=bing => {foo: bar, baz: bing}

// 獲取URL的查詢引數
q={};location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);q;
複製程式碼

本地時間

通過一堆HTML,您可以建立一個本地時間,其中包含您可以一口氣讀出的原始碼,它每秒都會用當前時間更新頁面

// 建立本地時間
<body onload="setInterval(()=>document.body.innerHTML=new Date().toLocaleString().slice(10,19))"></body>
複製程式碼

陣列混淆

隨機更改陣列元素順序,混淆陣列

// 隨機更改陣列元素順序,混淆陣列
(arr) => arr.slice().sort(() => Math.random() - 0.5)
/* 
let a = (arr) => arr.slice().sort(() => Math.random() - 0.5)
let b = a([1,2,3,4,5])
console.log(b)
*/
複製程式碼

生成隨機十六進位制程式碼(生成隨機顏色)

使用JavaScript簡潔程式碼生成隨機十六進位制程式碼

// 生成隨機十六進位制程式碼 如:'#c618b2'
'#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');
複製程式碼

一個面試題

這是一個臭名昭著的面試題,讓你寫出他的執行結果,受不了~

for(i=0;++i<101;console.log(i%5?f||i:f+'Buzz'))f=i%3?'':'Fizz'
複製程式碼

陣列去重

這是一個原生的JS函式但是非常簡潔,Set接受任何可迭代物件,如陣列[1,2,3,3],並刪除重複項

// 陣列去重
[...new Set(arr)]
複製程式碼

建立特定大小的陣列

方便快捷建立特定大小的陣列

[...Array(3).keys()]
// [0, 1, 2]
複製程式碼

返回一個鍵盤(驚呆了)

這是一個很難看懂的簡潔程式碼,但是執行後你會驚呆的,他竟然返回一個圖形鍵盤

// 用字串返回一個鍵盤圖形
(_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x<y?2:' 667699'[x=["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',p])}\\|`,m+=y+(x+'    ').slice(0,w)+y+y,n+=y+b+y+y,l+=' __'+b)[73]&&(k.push(l,m,n,o),l='',m=n=o=y),m=n=o=y='|',p=l=k=[])&&k.join`
`)()
複製程式碼

這是它的列印結果:

一個鍵盤
驚人!

相關文章