沐鳴下載_JS數組中 forEach() 和 map() 的區別

當需要多個操作時,使用forEach()方法是一項非常乏味的工作。我們可以在這種情況下使用map()方法。,
,由於forEach()返回undefined,所以我們需要傳遞一個空數組來創建一個新的轉換后的數組。map()方法不存在這樣的問題,它直接返回新的轉換后的數組。在這種情況下,建議使用map()方法。,const numbers = [
1,
2,
3,
4,
5];
// 使用 forEach()
const squareUsingForEach = []; numbers.forEach(
x => squareUsingForEach.push(x*x));
// 使用 map()
const squareUsingMap = numbers.map(
x => x*x);
console.log(squareUsingForEach);
// [1, 4, 9, 16, 25]
console.log(squareUsingMap);
// [1, 4, 9, 16, 25],// Array:
var numbers = [];
for (
var i =
0; i <
1000000; i++ ) { numbers.push(
Math.floor((
Math.random() *
1000) +
1)); }
// 1. forEach()
console.time(
“forEach”);
const squareUsingForEach = []; numbers.forEach(
x => squareUsingForEach.push(x*x));
console.timeEnd(
“forEach”);
// 2. map()
console.time(
“map”);
const squareUsingMap = numbers.map(
x => x*x);
console.timeEnd(
“map”);,這是在MacBook Pro的
Google Chrome v83.0.4103.106(64位)上運行上述代碼后的結果。 建議複製上面的代碼,然後在自己控制台中嘗試一下。,
,onst numbers = [
1,
2,
3,
4,
5];
// 使用 forEach()
const squareUsingForEach = []
let sumOfSquareUsingForEach =
0; numbers.forEach(
x => squareUsingForEach.push(x*x)); squareUsingForEach.forEach(
square => sumOfSquareUsingForEach += square);
// 使用 map()
const sumOfSquareUsingMap = numbers.map(
x => x*x).reduce(
(total, value) => total + value) ;
console.log(sumOfSquareUsingForEach);
// 55
console.log(sumOfSquareUsingMap);
// 55,map()方法輸出可以與其他方法(如reduce()、sort()、filter())鏈接在一起,以便在一條語句中執行多個操作。,另一方面,forEach()是一個終端方法,這意味着它不能與其他方法鏈接,因為它返回undefined。,我們使用以下兩種方法找出數組中每個元素的平方和:,當需要多個操作時,使用forEach()方法是一項非常乏味的工作。我們可以在這種情況下使用map()方法。

沐鳴登錄平台_TypeScript 漸進遷移指南

花了 10 個小時使用 console.log 排查問題后,你終於修復了 Cannot read property ‘x’ of undefined 問題,出現這個問題的原因是調用了可能為 undefined 的某個方法,給了你一個「驚喜」!你暗暗發誓,一定要把整個項目遷移到 TypeScript。但是看了看 lib、util、components 文件夾里上萬個 JavaScript 文件,你對自己說:「等以後吧,等我有空的時候。」當然那一天永遠也不會到來,因為總有各種酷炫的新特性等着加到應用,客戶也不會因為項目是用 TypeScript 寫的就出大價錢。,遷移一個包含成千上百個文件的大型項目可能比你想象得要容易。整個過程主要分 3 步。,我在大概一年前寫了一篇如何把 Node.js 項目從 JavaScript 遷移到 TypeScript 的指南。指南的閱讀量超過了七千,不過其實當時我對 JavaScript 和 TypeScript 的了解並不深入,把重心更多地放到特定工具上,而沒怎麼從全局着手。最大的問題是我沒有提供遷移
大型項目的解決方案。顯然,大型項目不可能在短時間內重寫一切。因此,我很想分享下我最近學到的遷移項目到 TypeScript 的主要經驗。,添加神奇的 d.ts,const user = {
id:
1234,
firstname:
‘Bruce’,
lastname:
‘Wayne’,
status:
‘online’, };
const users = [user];
const onlineUsers = users.filter(
(u) => u.status ===
‘online’);
console.log( onlineUsers.map(
(ou) =>
`${ou.firstname} ${ou.lastname} is ${ou.status}`) );,連接類型,function sendMessage(from, to, message),d.ts 是 TypeScript 的類型聲明文件,其中聲明了代碼中用到的對象和函數的各種類型,不包含任何具體的實現。,如果我告訴你,你可以
增量遷移到 TypeScript 並
立刻從中受益呢?,export
interface User { id:
number; firstname:
string; lastname:
string; status:
‘online’ |
‘offline’; },注意:本文假定你已經有一定的 TypeScript 基礎,同時使用 Visual Studio Code,否則,一些地方可能不一定直接適用。,相關代碼:https://github.com/,
,花了 10 個小時使用 console.log 排查問題后,你終於修復了 Cannot read property ‘x’ of undefined 問題,出現這個問題的原因是調用了可能為 undefined 的某個方法,給了你一個「驚喜」!你暗暗發誓,一定要把整個項目遷移到 TypeScript。但是看了看 lib、util、components 文件夾里上萬個 JavaScript 文件,你對自己說:「等以後吧,等我有空的時候。」當然那一天永遠也不會到來,因為總有各種酷炫的新特性等着加到應用,客戶也不會因為項目是用 TypeScript 寫的就出大價錢。

沐鳴測速註冊_File、Blob、dataURL 和 canvas 的應用與轉換

(2) Data URLs 由四個部分組成:前綴(data:)、指示數據類型的MIME類型、如果非文本則為可選的base64標記、數據本身:data:[ ][;base64],,(2) File 對象是特殊類型的 Blob,且可以用在任意的 Blob 類型的 context 中。比如:FileReader, URL.createObjectURL(), createImageBitmap(), 及 XMLHttpRequest.send() 都能處理 Blob 和 File。,(1) 通常情況下, File 對象是來自用戶在一個 input 元素上選擇文件后返回的 FileList 對象,也可以是來自由拖放操作生成的 DataTransfer 對象,或者來自 htmlCanvasElement 上的 mozGetAsFile() API。,1. File,function fileToDataURL(file) {

let reader = new FileReader()

reader.readAsDataURL(file)

// reader 讀取文件成功的回調

reader.onload = function(e) {

return reader.result

}

},2. Blob,// 思路:File, Blob ——> dataURL ——> canvas

function fileAndBlobToCanvas(fileDataURL) {

let img = new Image()

img.src = fileDataURL

let canvas = document.createElement(‘canvas’)

if(!canvas.getContext) {

alert(‘瀏覽器不支持canvas’)

return;

}

let ctx = canvas.getContext(‘2d’)

document.getElementById(‘container’).appendChild(canvas)

img.onload = function() {

ctx.drawImage(img, 0, 0, canvas.width, canvas.height)

}

},
,(1) Canvas API 提供了一個通過JavaScript 和 html的 canvas 元素來繪製圖形的方式。它可以用於動畫、遊戲畫面、數據可視化、圖片編輯以及實時視頻處理等方面。,function dataURLToBlob(fileDataURL) {

let arr = fileDataURL.split(‘,’),

mime = arr[0].match(/:(.*?);/)[1],

bstr = atob(arr[1]),

n = bstr.length,

u8arr = new Uint8Array(n);

while(n –) {

u8arr[n] = bstr.charCodeAt(n)

}

return new Blob([u8arr], {type: mime})

},(1) Blob 對象表示一個不可變、原始數據的類文件對象。它的數據可以按文本或二進制的格式進行讀取,也可以轉換成 ReadableStream 來用於數據操作。,(2) Blob 表示的不一定是JavaScript原生格式的數據。File 接口基於Blob,繼承了 blob 的功能並將其擴展使其支持用戶系統上的文件。,(1) Data URLs,即前綴為 data: 協議的URL,其允許內容創建者向文檔中嵌入小文件。,(2) Data URLs 由四個部分組成:前綴(data:)、指示數據類型的MIME類型、如果非文本則為可選的base64標記、數據本身:data:[ ][;base64],

沐鳴開戶_8個常用的JavaScript數組方法

結果:,過濾方法,返回符合條件的元素。,數組(Array)是JavaScript中內置的全局對象,在構建諸如商品列表等組件(Component)時,時常用到。除了常見的push、pop、indexOf等方法,js還提供了一些諸如過濾、規約等流處理方法,非常類似於Java的Stream庫。,const students = [ { name: ‘Alice’, score: 100 }, { name: ‘Bob’, score: 90 }, { name: ‘Trunp’, score: 80 }, { name: ‘Biden’, score: 70 }, { name: ‘Joe’, score: 60 }, { name: ‘Sunshine’, score: 50 }, { name: ‘Elon’, score: 40 }, { name: ‘Jack’, score: 30 }, ];,[ { name: ‘Alice’, score: 100 }, { name: ‘Bob’, score: 90 }, { name: ‘Trunp’, score: 80 } ],結果:,類似於filter方法,但返回第一個符合條件的元素。filter返回一個數組,find返回一個object。,//返回成績大於75的高分學生 const highScores = students.filter(stu => stu.score > 75); console.log(highScores);,結果:,更好的是,由於const類型的值,都是不可變量,因此這些操作的返回的都是一個新對象,並不會影響到原值。,將數組內的item轉化成另一種對象,類似於Java的Fucntion<T,R>接口。,結果:

沐鳴登錄平台_學習函數式編程 Monad

還記得 Jquery 時代的 ajax 操作嗎?,上述代碼就是一個最基本的 Monad,它將程序的多個步驟抽離成線性的流,通過 bind 方法對數據流進行加工處理,最終得到我們想要的結果。,這些定義很抽象,我們用一段 js 代碼來模擬一下。,Monad 處理副作用,class Monad { value = “”; // 構造函數 constructor(value) { this.value = value; } // unit,把值裝入 Monad 構造函數中 unit(value) { this.value = value; } // bind,把值轉換成一個新的 Monad bind(fn) { return fn(this.value); } } // 滿足 x-> M(x) 格式的函數 function add1(x) { return new Monad(x + 1); } // 滿足 x-> M(x) 格式的函數 function square(x) { return new Monad(x * x); } // 接下來,我們就能進行鏈式調用了 const a = new Monad(2) .bind(square) .bind(add1); //… console.log(a.value === 5); // true,fetch(“request1”) .then((response1) => { return fetch(“request2”); }) .then((response2) => { return fetch(“request3”); }) .then((response3) => { console.log(response3); // 得到最終結果 });,Promise 的出現,解決了上述問題。,上述代碼中,我們通過回調函數,串行執行了 3 個 ajax 操作,但同樣也生成了 3 層代碼嵌套,這樣的代碼不僅難以閱讀,也不利於日後維護。,$.ajax({ type: “get”, url: “request1”, success: function (response1) { $.ajax({ type: “get”, url: “request2”, success: function (response2) { $.ajax({ type: “get”, url: “request3”, success: function (response3) { console.log(response3); // 得到最終結果 }, }); }, }); }, });,Ok,我們已經明白了 Monad 的內部結構,接下來,我們再看一下 Monad 的使用場景。,
,通過 Monad 的規則,衍生出了許多使用場景。,還記得 Jquery 時代的 ajax 操作嗎?

沐鳴娛樂業務:_那些你不知道的JSON.stringify()的用處

第二個參數,為函數時

,
,一般情況下,我們使用jsON.stringify() 是為了將一個對象轉為字符串輸出。,(3)第三個參數為字符串或數值時, 字符串會以該字符向前填充,數值則按照tab鍵個數填充,
,(1)第一個參數是我們要字符串化的對象或者數組,但是其實它還有第二個/第三個參數哦,
,(2)第二個參數,為數組時,將key作為關鍵字打印我們需要的信息,第二個參數,為函數時

沐鳴總代理_常見的幾種網絡故障案例分析與解決!

如果需要在交換機加電之後迅速實現數據轉發,可以禁用擴展樹協議,或者將端口設置為PortFast模式。不過需要注意的是,這兩種方法雖然省略了端口檢測過程,但是一旦網絡設備之間產生拓撲環,將導致網絡通信癱瘓。,
,常見的幾種網絡故障案例分析與解決!希望對大家有幫助!,辦公室中有4台計算機,但是只有一個信息插座,於是配置了一台5口(其中一口為UpLink端口)交換機。原以為4台計算機剛好與4個接口連接,1個UpLink端口用於連接到局域網,但是接入到網絡之後,與UpLink端口相鄰的1號口無法正常使用。,
,交換機剛剛開啟的時候無法連接至其他網絡,需要等待一段時間才可以。另外,需要使用一段時間之後,訪問其他計算機的速度才快,如果有一段時間不使用網絡,再訪問的時候速度又會慢下來。,由於這台交換機是一台可網管交換機,為了避免網絡中存在拓撲環,從而導致網絡癱瘓,可網管交換機在默認情況下都啟用生成樹協議。這樣即使網絡中存在環路,也會只保留一條路徑,而自動切斷其他鏈路。所以,當交換機在加電啟動的時候,各端口需要依次進入監聽、學習和轉髮狀態,這個過程大約需要3~5分鐘時間。,如果需要迅速啟動交換機,可以在直接連接到計算機的端口上啟動“PortFast”,使得該端口立即並且永久轉換至轉髮狀態,這樣設備可以立即連接到網絡,避免端口由監聽和學習狀態向轉髮狀態過渡而必須的等待時間。,如果需要在交換機加電之後迅速實現數據轉發,可以禁用擴展樹協議,或者將端口設置為PortFast模式。不過需要注意的是,這兩種方法雖然省略了端口檢測過程,但是一旦網絡設備之間產生拓撲環,將導致網絡通信癱瘓。

沐鳴首頁_一行CSS實現全站中文簡繁轉換

,表示當前文字使用繁體變體。,就是這麼一行css:,一、不BB,直接解密,font-variant-east-asian: traditional;,二、需要字體支持-OS X和iOS有效,body { font-family: ‘PingFang SC’; font-variant-east-asian: traditional; },關鍵問題就在於這種效果需要字體本身包含繁體變體。,卧槽,css居然有這麼炫酷的能力,那為何沒幾個人知道呢?,body { font-variant-east-asian: traditional; },再加粗显示一下:,例如:,就可以讓整個頁面的簡體中文變成繁體。,

沐鳴總代平台_常見的Web攻擊方式有哪些?

這些Web攻擊手段,有些可植入惡意代碼,有些可獲取網站權限,有些還能獲取網站用戶隱私信息。光常見的Web攻擊,就有28種之多,方式多、破壞力驚人!,在這裏,給廣大的黑客朋友們說一句:“你們辛苦了。”,有數據显示,有約98%的網站曾經遭受黑客攻擊。也就是說,幾乎所有的網站,都被黑客送過“溫暖”,它們無時無刻都在關注着我們的網站,有時候他們對網站的關注程度,甚至超過了我們。,Web應用未對用戶提交的數據做過濾或者轉義,導致後端數據庫服務器執行了黑客提交的sql語句。黑客利用sql注入攻擊可進行拖庫、植入webshell,進而入侵服務器。,
,聖誕老人只會在平安夜,給孩子們送去各種各樣的禮物,黑客們卻更加敬業,365天全年無休,7×24小時值班蹲守,只要你的網站有可乘之機,它就會毫不猶豫,盡職盡責。,就像聖誕襪里的禮物一樣,禮物雖然五花八門,但總不會裝着宇宙飛船和航空母艦,它總在一個範圍內。黑客們送給站長們的“禮物”雖然千奇百怪,但也總離不開那幾樣。,黑客們會送什麼樣的“禮物”呢?是時候揭秘一下了!,這些Web攻擊手段,有些可植入惡意代碼,有些可獲取網站權限,有些還能獲取網站用戶隱私信息。光常見的Web攻擊,就有28種之多,方式多、破壞力驚人!

沐鳴娛樂_react 開發中的一些小技巧,助你一臂之力

那麼如何解決這個異步的問題呢?這裡有幾種方式可以參考:,
,我使用 react 開發已經 1 年的時間了,不能說很精通,不過在使用的過程中,確實領悟和總結了一些小技巧,可以加快我們後續的開發,1.1 useState 是異步的,const [data, setData] = useState(); const func = () => { console.log(data); }; useEffect(() => { setData({ name: ‘蚊子’ }); func(); }, []);,1.2 setTimeout 中的 state 永遠是初始值,useEffect(() => { const data = { name: ‘蚊子’ }; setData(data); func(data); }, []);,我們想要延遲設置一些數據,例如讓一個計數器固定簡單的增加+1,我們可能會這樣寫:,延時觸發也可以解決這個問題,但是最不建議這種方式,一個異步問題,如果再用一個延時更大的異步操作來兜底,可能還會產生其他一些未知的問題。,useEffect(() => { if (data) { // 當滿足條件時,執行func() func(); } }, [data]);,我們在使用 react 開發 function comppoent 時,必然繞不開 useState ,可謂是隨處可見,那麼 useState 中有哪些坑和需要注意的地方呢?,有些使用 react 時間較短的同學,經常會這樣寫,在調用 set 方法設置 state 的值后,立刻去獲取這個值:,然而在使用 log 輸出時,卻發現沒有變化。這是因為 useState 中的 set 是異步操作,而函數 func 的調用是同步的,這就導致 func()要比 set 先執行。,那麼如何解決這個異步的問題呢?這裡有幾種方式可以參考: