<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          11 個讓你成為忍者開發(fā)者的 JavaScript One-Liner

          共 4235字,需瀏覽 9分鐘

           ·

          2021-10-09 10:30

          英文 | https://betterprogramming.pub/11-javascript-one-liners-thatll-make-you-a-ninja-developer-4a15ac592669

          翻譯 | 楊小二


          比爾蓋茨說:“我選擇一個懶惰的人來做艱苦的工作。因?yàn)閼卸璧娜藭业揭环N簡單的方法來做到這一點(diǎn)。”

          作為開發(fā)人員,我們通常會盡量避免編寫長行代碼。我的意思是沒有人愿意用 500行代碼來寫一個50行就能實(shí)現(xiàn)的相同功能。

          成為一名忍者開發(fā)者還意味著找到一種簡單的方法來完成一項(xiàng)任務(wù)——編寫 50 行代碼而不是編寫 500 行代碼。Ninja 開發(fā)人員也喜歡使用 one-liners。他們擁有將長行代碼轉(zhuǎn)換為單行代碼的技能。

          今天,我將與你一起來學(xué)習(xí)這 11 個 JavaScript 單行代碼之,很可能,比爾·蓋茨可能想聘請你作為開發(fā)人員。

          1、找到最短的長度

          使用此函數(shù),你將找到給定字符串中單詞的最短長度。我們可以從一些函數(shù)中獲得幫助,例如 split()、sort() 和 pop()。

          const findShort = (s) => s.split(' ').sort((a, b) => b.length - a.length).pop().length;console.log(findShort("It's an amazing day to code"));// Result: 2console.log(findShort("Lorem Ipsum"));// Result: 5

          2、返回單詞的中間字符

          此函數(shù)返回單詞的中間字符。如果你給這個函數(shù)一個奇數(shù)長度的單詞,它會返回中間的字符。但是,如果給單詞的長度為偶數(shù),它將返回中間的兩個字符。

          const getMiddle = s => s.substring(Math.ceil(s.length/2)-1, Math.floor(s.length/2)+1);console.log(getMiddle("Amazing"));// Result: zconsole.log(getMiddle("Rubber"));// Result: bb

          3、將零移到最后

          函數(shù) moveZeros() 接受一個數(shù)組并將所有零移動到末尾。在這樣做的同時,它還保留了其他元素的順序。

          let moveZeros = (arr) => arr.filter(i => i !== 0).concat(arr.filter(i => i === 0));console.log(moveZeros([false, 1, 0, true, 1, 2, 5, 0, 1, 3, "Ajax"]));// Result: [false, 1, true, 1, 2, 5, 1, 3, "Ajax", 0, 0]

          4、數(shù)組差異

          如果你想從另一個數(shù)組中減去一個數(shù)組并返回差值,這是一個很好的方法。它保留結(jié)果列表中其他元素的順序。

          var array_diff = (a, b) => a.filter(item => b.indexOf(item) < 0)console.log(arrayDiff([1, true, "1", "2", 2, 5, 3], [false, "8", 3, 1]));// Result: [true, "1", "2", 2, 5]console.log(arrayDiff([1, true, "1", "2"], [1, true, "1", "2", 3]));// Result: []

          5、消除字符串中的元音

          使用 removeVowels() 函數(shù),你可以刪除給定字符串中的元音。

          const eliminateVowels = s => s.replace(/[aeiou]/gi, '');console.log(eliminateVowels("The Master Splinter Developer"));// Result: Th Mstr Splntr Dvlpr

          6、SOS

          使用此函數(shù),你可以檢查給定字符串中的“O”和“S”的數(shù)字是否相同。

          const SOS = s => s.replace(/o/ig, '').length == s.replace(/s/ig, '').length;console.log(SOS("SOS"));// Result: Falseconsole.log(SOS("So so"));// Result: Trueconsole.log(SOS(""));// Result: True

          7、按降序排列的整數(shù)位數(shù)

          你可以使用此函數(shù)返回一個整數(shù),其數(shù)字按降序排列。如果你為該函數(shù)提供非負(fù)整數(shù)會有所幫助。

          該函數(shù)會將數(shù)字重新排列為整數(shù)中可能的數(shù)字的最高數(shù)字。

          在這個函數(shù)中,我們將得到一些內(nèi)置函數(shù)的幫助,它們是 parseInt()、toString()、split()、sort()、reverse() 和 join()。

          const descendingOrder = n => parseInt(n.toString().split("").sort().reverse().join(""));console.log(descendingOrder(234782)); // Result: 874322console.log(descendingOrder(10010101010)); // Result: 11111000000console.log(descendingOrder(123456)); // Result: 654321

          8、找出出現(xiàn)奇數(shù)次的整數(shù)

          此函數(shù)將幫助你找到在給定數(shù)組中出現(xiàn)奇數(shù)次的整數(shù)。這個功能有一個不好的地方。如果你給出多個出現(xiàn)奇數(shù)次的整數(shù),它將不起作用。

          const findOdd = (a) => a.reduce((a, b) => a ^ b);console.log(findOdd([1, 2, 2, 1])); // Result: 0console.log(findOdd([1, 2, 2, 1, 2, 3, 3])); // Result: 2console.log(findOdd([1, 2, 3, 4])); // Result: 4 -> Not working

          9、求給定數(shù)組的最大子數(shù)組和

          使用此函數(shù),你可以找到給定數(shù)組的最大子數(shù)組和。這是一個需要解決的大問題。解決起來并不容易。尤其是想用單線方案來實(shí)現(xiàn)這個功能,就更具挑戰(zhàn)性了。但是,你可以從內(nèi)置函數(shù) reduce() 獲得幫助。

          const maxSequence = (a,sum=0) => a.reduce((max,v) => Math.max(sum = Math.max(sum + v, 0), max), 0);console.log(maxSequence([1,2,3,4])); // Result: 10console.log(maxSequence([1,2,3,4,-8])); // Result: 10console.log(maxSequence([1,-2,3,-2,5,-1,3,-9,1,6])); // Result: 8

          10、第二個數(shù)組的字符串是否包含第一個數(shù)組的字符串

          你可以使用此功能來回答上述問題。此函數(shù)將返回一個按字典順序排列的第一個數(shù)組字符串的排序數(shù)組,這些字符串是第二個數(shù)組字符串的子字符串。

          const inArray = (arr1, arr2) => arr1.filter(item => new RegExp(item).test(arr2)).sort()console.log(inArray(["Donald", "Strong", "The"],["Stronger, "More", "They"]));// Result: ["Strong", "The"]console.log(inArray(["Stronger", "More", "They"],["Donald, "Strong", "The"]));// Result: []console.log(inArray(["Novice"],["NOVICE"]));// Result: []

          11、找到前一個數(shù)的倍數(shù),3的倍數(shù)

          此函數(shù)刪除最后一位數(shù)字,直到找到一個是 3 的倍數(shù)的數(shù)字。如果給定的參數(shù)已經(jīng)是3的倍數(shù),它將返回它。如果不是3的倍數(shù)的數(shù)字集合,它將返回 null。

          給自己舉一個很好的例子,如果整數(shù)的每個數(shù)字之和被3除,你可以認(rèn)為3整除一個整數(shù)。

          const f = prevMultOfThree = n => n ? n % 3 ? f(n/10 |0) : n : nullconsole.log(prevMultOfThree(3)); // Result: 3console.log(prevMultOfThree(36)); // Result: 36console.log(prevMultOfThree(1236)); // Result: 1236console.log(prevMultOfThree(5245)); // Result: nullconsole.log(prevMultOfThree(4552)); // Result: 45console.log(prevMultOfThree(11)); // Result: null

          結(jié)論

          今天,我與你分享的 11 個 JavaScript 單行程序。其中一些可能對你來說很容易,而另一些則讓你進(jìn)行頭腦風(fēng)暴。學(xué)習(xí)這些 one-liners 中的內(nèi)置函數(shù)也可以給你一些編程靈感。

          感謝你的時間,謝謝你的閱讀。


          學(xué)習(xí)更多技能

          請點(diǎn)擊下方公眾號

          瀏覽 15
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲视频在线观看不卡 | 亚洲午夜成人精品 | 欧美精品aaa | 非洲黑人大吊操逼 | 欧美日韩成人视频 |