【筆記】【JavaScript】JSchallenger-Arrays對象-練習筆記

来源:https://www.cnblogs.com/lao-jiaweijarvee/archive/2022/04/27/16199778.html
-Advertisement-
Play Games

前言 【筆記內容】 關於JSchallenger中Arrays對象題目的復盤 本人的提交、以及做題時的思路 分析作者答案 涉及的知識快速瞭解,註意:並不深入分析具體知識,只是圍繞題目展開 【筆記目的】 幫助本人進一步瞭解Javascript的Arrays對象以及涉及的方法 對自己做題後的復盤,進一步 ...


前言

【筆記內容】

  • 關於JSchallenger中Arrays對象題目的復盤
  • 本人的提交、以及做題時的思路
  • 分析作者答案
  • 涉及的知識快速瞭解,註意:並不深入分析具體知識,只是圍繞題目展開

【筆記目的】

  • 幫助本人進一步瞭解Javascript的Arrays對象以及涉及的方法
  • 對自己做題後的復盤,進一步瞭解自己的不足之處

【相關資源】


溫馨提示

  • 筆記中有些個人理解後整理的筆記,可能有所偏差,也懇請讀者幫忙指出,謝謝。
  • 若是有其他的解題方法也請讀者分享到評論區,一起學習,共同進步,謝謝。
  • 我的提交有不足之處也懇請讀者幫忙指出,不吝賜教,謝謝。


Array對象快速瞭解

  • 用於構造數組的全局對象
  • JavaScript 數組的長度和元素類型都是非固定的。
  • 只能用整數作為數組元素的索引,而不能用字元串。

PS什麼是數組?

  • 類似於列表的高階對象。

常見操作

方法 描述
let arr=[數組元素1,...,數組元素n] 創建數組
let el=arr[索引] 通過索引訪問數組元素
arr.forEach(function(item,index,array)){} 遍曆數組
arr.push(添加元素) 添加元素到數組的末尾
arr.pop() 刪除數組末尾的元素
arr.shift() 刪除數組頭部元素
arr.push(目標元素) arr.indexOf(目標元素)
arr.splice(,) 通過索引刪除某個元素
let shallowCopy = arr.slice() 複製一個數組

瞭解更多


JSchallenger-Arrays

Get nth element of array

需求:

Write a function that takes an array (a) and a value (n) as argument

Return the nth element of 'a'

我的提交(作者答案)

function myFunction(a, n) {
   return a[n - 1];
}

涉及知識(訪問數組元素)

訪問數組元素

  • 數組的索引是從0開始的,第一個元素的索引為0,最後一個元素的索引等於該數組的length 減1。
  • 指定的索引是一個無效值,返回 undefined

格式

arr[index]

index:訪問數組元素目標索引

瞭解更多


Remove first n elements of an array

需求:

Write a function that takes an array (a) as argument

Remove the first 3 elements of 'a'

Return the result

我的提交(作者答案)

function myFunction(a) {
   return a.slice(3);
}

涉及知識(slice()方法)

Array.prototype.slice()

  • 返回一個新的由 beginend 決定的原數組的淺拷貝數組對象
  • 原始數組不會被改變
  • 會提取原數組中索引從 beginend 的所有元素(包含 begin,但不包含 end

格式

arr.slice([begin[, end]])

begin(提取起始處的索引):可選

  • 省略:預設從 0 開始
  • 負數:從原數組中的倒數第幾個元素開始提取,到最後一個元素(包含最後一個元素)。
  • 超出原數組的索引範圍:返回空數組

end(提取終止處的索引):可選

  • 負數:在原數組中的倒數第幾個元素結束抽取,到最後一個元素(不包含最後一個元素)
  • 省略:會一直提取到原數組末尾。
  • 大於數組的長度:也會一直提取到原數組末尾。

返回值:一個含有被提取元素的新數組

瞭解更多


Get last n elements of an array

需求:

Write a function that takes an array (a) as argument

Extract the last 3 elements of a

Return the resulting array

我的提交(作者答案)

function myFunction(a) {
    return a.slice(-3);
}

涉及知識(slice()方法)

Array.prototype.slice()

點擊此處跳轉


Get first n elements of an array

需求:

Write a function that takes an array (a) as argument

Extract the first 3 elements of a

Return the resulting array

我的提交(作者答案)

function myFunction(a) {
   return a.slice(0, 3);
}

涉及知識(slice()方法)

Array.prototype.slice()

點擊此處跳轉


Return last n array elements

需求:

Write a function that takes an array (a) and a number (n) as arguments

It should return the last n elements of a

我的提交(作者答案)

function myFunction(a, n) {
  return a.slice(-n);
}

涉及知識(slice()方法)

Array.prototype.slice()

點擊此處跳轉


Remove a specific array element

需求:

Write a function that takes an array (a) and a value (b) as argument

The function should clean a from all occurrences of b

Return the filtered array

我的提交(作者答案)

function myFunction(a, b) {
   return a.filter(item => item !== b);
}

涉及知識(filter()方法,箭頭函數)

array.filter()方法

  • 創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
  • 不會對空數組進行檢測。
  • 不會改變原始數組。

格式(註意該格式不完整,之針對本題的格式

array.filter(function(currentValue))

function(currentValue):必需,函數,數組中的每個元素都會執行這個函數

  • currentValue:必需。當前元素的值

返回值:數組。

  • 包含了符合條件的所有元素。
  • 沒有符合條件的元素:返回空數組。

瞭解更多



箭頭函數

  • 使函數表達式更簡潔
  • 更適用於那些本來需要匿名函數的地方
  • 它不能用作構造函數

格式

(param1, param2, …, paramN) => expression
(param1, param2, …, paramN) => { statements }
//相當於:(param1, param2, …, paramN) =>{ return expression; }

param:參數

expression:表達式

其他格式 前提
singleParam => { statements } 只有一個參數時,圓括弧是可選的:
() => { statements } 沒有參數的函數應該寫成一對圓括弧。

瞭解更多


Count number of elements in JavaScript array

需求:

Write a function that takes an array (a) as argument

Return the number of elements in a

我的提交(作者答案)

function myFunction(a) {
   return a.length;
}

涉及知識(array.length)

Array.length

  • Array的實例屬性,值是一個 0 到 2^32 - 1 的整數
  • 返回或設置一個數組中的元素個數

瞭解更多


Count number of negative values in array

需求:

Write a function that takes an array of numbers as argument

Return the number of negative values in the array

我的提交

function myFunction(a){
	var count=0;
	for(var i=0;i<a.length;i++){
   		if(a[i]<0){
      	count++;
   		}
	}
	return count;
}

作者答案

function myFunction(a) {
   return a.filter((el) => el < 0).length;
}

涉及知識(array.filter()方法、箭頭函數)

array.filter()方法

點擊此處跳轉



箭頭函數

點擊此處跳轉


Sort an array of numbers in descending order

需求:

Write a function that takes an array of numbers as argument

It should return an array with the numbers sorted in descending order

我的提交

function myFunction(arr) {
   arr1=arr.sort();
   return arr1.reverse();
}

作者答案

function myFunction( arr ) {
  return arr.sort((a, b) => b - a)
}

涉及知識(array.sort()方法、array.reverse()方法、箭頭函數)

Array.prototype.sort()

  • 排列數組,排序順序可以是按字母或數字,也可以是升序(向上)或降序(向下)。
  • 預設將按字母和升序將值作為字元串進行排序。
  • 在對數字字元串進行排序時會產生不正確的結果。(如"25" >"100",因為2>1)
  • 會改變原始數組

格式(註意該格式不完整,之針對本題的格式

arr.sort([compareFunction])

compareFunction(指定按某種順序進行排列的函數):可選。

  • 省略:元素按照轉換為的字元串的各個字元的Unicode位點進行排序

  • 指明瞭 compareFunction:數組會按照調用該函數的返回值排序

    compareFunction(a, b)的a-b a、b相對位置
    小於 0 a 會被排列到 b 之前(順序)
    等於 0 位置不變
    大於 0 b 會被排列到 a 之前(逆序)

返回值:數組

  • 排序後的數組(數組已原地排序,並且不進行複製

瞭解更多



Array.prototype.reverse()

  • 將數組中元素的位置顛倒,,並返回該數組。
  • 會改變原數組。

格式

 arr.reverse()

返回值:顛倒後的數組。



箭頭函數

點擊此處跳轉


Sort an array of strings alphabetically

需求:

Write a function that takes an array of strings as argument

Sort the array elements alphabetically

Return the result

我的提交(作者答案)

function myFunction(arr) {  
   return arr.sort();
}

涉及知識(字母排序方法)

字母排序方法

使用Array.prototype.sort()方法排序

點擊此處跳轉


Return the average of an array of numbers

需求:

Write a function that takes an array of numbers as argument

It should return the average of the numbers

我的提交

function myFunction(arr){
	var sum=0;
	for(var i=0;i<arr.length;i++){
   		sum+=arr[i];
	}
	return sum/arr.length;
}

作者答案

function myFunction( arr ) {
	return arr.reduce((acc, cur) => acc + cur, 0) / arr.length
}

涉及知識(reduce()方法、箭頭函數)

Array.prototype.reduce()

  • 接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。
  • 對於空數組是不會執行回調函數的

格式(註意該格式不完整,之針對本題的格式

array.reduce(function(total, currentValue))

function(total,currentValue)(用於執行每個數組元素的函數):必需。

  • total初始值, 或者計算結束後的返回值):必需。
  • currentValue(當前元素):必需。

返回值:計算結果

瞭解更多



箭頭函數

點擊此處跳轉


Return the longest string from an array of strings

需求:

Write a function that takes an array of strings as argument、

Return the longest string

我的提交

function myFunction(arr) {
   var max;
   for(var i=0;iarr[i+1].length){
         max=arr[i];
      }else{
         max=arr[i+1];
      }
   }
   return max;
}

作者答案

function myFunction( arr ) {
	return arr.reduce((a, b) => a.length <= b.length ? b : a)
}

涉及知識(reduce()方法、箭頭函數、三目運算符)

Array.prototype.reduce()

點擊此處跳轉



箭頭函數

點擊此處跳轉



三目運算符

格式

expression ? sentence1 : sentence2
  • expression:判斷表達式

  • sentence1:值為true時,執行語句

  • sentence2:值為false時,執行語句

  • 類似於if語句:

    if(expression){
       sentence1;
    }else{
       sentence2;
    }
    

Check if all array elements are equal

需求:

Write a function that takes an array as argument

It should return true if all elements in the array are equal

It should return false otherwise

我的提交

function myFunction(arr) {
   return arr.every(item=>item ===arr[0]);
}

作者答案

function myFunction( arr ) {
  return new Set(arr).size === 1
}

涉及知識(every()方法、set().size方法、相等操作符)

Array.prototype.every()

  • 用於檢測數組所有元素是否都符合指定條件(通過函數提供)
    • 如果數組中檢測到有一個元素不滿足,則整個表達式返回 false ,且剩餘的元素不會再進行檢測。
    • 如果所有元素都滿足條件,則返回 true。

註意:

  • 不會對空數組進行檢測
  • 不會改變原始數組

格式(註意該格式不完整,之針對本題的格式

array.every(function(currentValue))

function(currentValue)(函數):必須。

  • 數組中的每個元素都會執行這個函數
    • currentValue:必須,當前元素的值

返回值:布爾值

  • true:所有元素都通過檢測
  • false:數組中檢測到有一個元素不滿足

瞭解更多



set().size方法

  • 返回Set對象中元素的個數。
  • size的值是一個整數,表示Set對象有多少條目。
  • size的集合訪問函數是undefined
  • 不能改變這個屬性


相等操作符

相等和不等
相等 不等
== !=
相等返回true 不等返回true
  • 都會先轉換操作數(強制轉換),再比較相等性

  • 轉換不同數據類型時,遵循基本規則

    • 布爾值比較,false為0,true為1

      表達式
      false == 0 true
      true == 1 true
      true == 2 false
    • 字元串比較,先將字元串轉換成數值(ASCII碼數值)

      表達式
      "5" == 5 true
    • 對象比較,要調用對象的valueOf()方法,得到基本類型值再比較

  • 比較時,遵循的規則

    • nullundefined是相等的

      表達式
      null == undefined true
    • 比較相等性之前,不能將nullundefined轉換成其他任何值

      表達式
      undefined == 0 false
      null == 0 false
    • 有一個操作數是NaN。相等返回false,不相等返回true註意:即使兩個操作數都是NaNNaN不等於NaN,返回false

      表達式
      "NaN" == NaN false
      5 == NaN false
      NaN == NaN false
      NaN != NaN false
    • 兩個操作數都是對象,如果兩個操作數都指向同一個對象,則相等返回true,相反返回false


全等和不全等
全等 不全等
=== !==

全等和不全等相等和不等的區別:

===!== ==!=
比較前操作數是否需要轉換 不需要 需要

示例

var result1 ={"55" == 55 };		//true
var result2 ={"55" === 55 };	//false

var result3 ={"55" != 55 };		//false
var result4 ={"55" !== 55 };	//true

var result5 ={null == undefined };	//true
var result6 ={null === undefined };	//false

為了保持代碼中數據類型的完整性,推薦使用全等和不全等操作符


Merge an arbitrary number of arrays

需求:

Write a function that takes arguments an arbitrary number of arrays

It should return an array containing the values of all arrays

我的提交

function myFunction(...arrays) {
   return [].concat(...arrays);
}

作者答案

function myFunction( ...arrays ) {
return arrays.flat()
}

涉及知識(concat()方法、flat()方法、擴展運算符、拼接數組的思路)

concat()方法

  • 用於連接兩個或多個數組。
  • 不會更改現有數組,而是返回一個新數組,其中包含已連接數組的值。

格式

array1.concat(array2, array3, ..., arrayX)

array2, array3, ..., arrayX:必需。要連接的數組。

返回值:已連接的數組



flat()方法

  • 按照一個可指定的深度遞歸遍曆數組,並將所有元素與遍歷到的子數組中的元素合併為一個新數組返回。

格式

var newArray = arr.flat([depth])

depth:指定要提取嵌套數組的結構深度,預設值為 1

返回值:一個包含將數組與子數組中所有元素的新數組



擴展運算符

  • ES6
  • 又稱對象展開符,用...表示
  • 主要用於函數調用

瞭解更多



拼接數組思路(拓展)

思路一:concat方法

具體操作結合我的提交與涉及知識

思路二:flat()方法

具體操作結合作者答案與涉及知識

思路三:apply(推薦)

arr1.push.apply(arr1,arr2);

思路四:es6的寫法(推薦)

arr1.push(...arrays);

Sort array by object property

需求:

Write a function that takes an array of objects as argument

Sort the array by property b in ascending order

Return the sorted array

我的提交

function myFunction(arr) {
    return arr.sort((a,b)=>a.b-b.b);
}

作者答案

function myFunction(arr) {
   const sort = (x, y) => x.b - y.b;
   return arr.sort(sort);
}

涉及知識(const、sort()方法、箭頭函數)

const

  • 塊級範圍的常量,非常類似用 let 語句定義的變數
  • 但常量的值是無法(通過重新賦值)改變的,也不能被重新聲明。

格式

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];

nameN:常量名稱,可以是任意合法的標識符。

valueN:常量值,可以是任意合法的表達式。

瞭解更多



sort()方法

點擊此處跳轉



箭頭函數

點擊此處跳轉


Merge two arrays with duplicate values

需求:

Write a function that takes two arrays as arguments

Merge both arrays and remove duplicate values

Sort the merge result in ascending order

Return the resulting array

 Write a function that takes two arrays as arguments
// Merge both arrays and remove duplicate values
// Sort the merge result in ascending order
// Return the resulting array

這道題我試了很多方法,都是說有一個或多個測試案例不過。請小伙伴們在留言區分享這道題的解法,謝謝啦!!!!


Sum up all array elements with values greater than

需求:

Write a function that takes an array (a) and a number (b) as arguments

Sum up all array elements with a value greater than b

Return the sum

我的提交

function myFunction(a, b) {
   var sum=0;
   for(var i=0;ib){
         sum+=a[i];
      }
   }
   return sum;
}

作者答案

function myFunction(a, b) {
  return a.reduce((sum, cur) => {
    if (cur > b) return sum + cur;
    return sum;
  }, 0);
}

涉及知識(reduce()方法,箭頭函數)

Array.prototype.reduce()

點擊此處跳轉



箭頭函數

點擊此處跳轉


Create a range of numbers

需求:

Write a function that takes two numbers (min and max) as arguments

Return an array of numbers in the range min to max

我的提交

function myFunction(min, max) {
   var arr = [];
   var length=max-min;
   var t=min;
   for(var i=0;i<=length;i++){
      arr[i]=t;
      t++;
   }
   return arr;
}

作者答案

function myFunction(min, max) {
  let arr = [];
  for (let i = min; i <= max; i++) {
    arr.push(i);
  }
return arr;
}

涉及知識(let、push()方法)

let

  • let 聲明的變數只在 let 命令所在的代碼塊內有效
  • ES6

瞭解更多



push()方法

  • 可向數組的末尾添加一個或多個元素,並返回新的長度。

註意:

  • 新元素將添加在數組的末尾
  • 此方法改變數組的長度
  • 在數組起始位置添加元素請使用 unshift() 方法。

格式

 array.push(item1, item2, ..., itemX)

item1, item2, ..., itemX:必需。要添加到數組的元素。

返回值:數組


Group array of strings by first letter

需求

Write a function that takes an array of strings as argument

Group those strings by their first letter

Return an object that contains properties with keys representing first letters

The values should be arrays of strings containing only the corresponding strings

For example, the array ['Alf', 'Alice', 'Ben'] should be transformed to

{ a: ['Alf', 'Alice'], b: ['Ben']}

我的提交

function myFunction(arr){
    let resultObj = {};
  	for (let i =0; i < arr.length; i++) {
    	let currentWord = arr[i];
    	let firstChar = currentWord[0].toLowerCase();
    	let innerArr = [];
    	if (resultObj[firstChar] === undefined) {
       		innerArr.push(currentWord);
      		resultObj[firstChar] = innerArr
    	}else {
      		resultObj[firstChar].push(currentWord)
    	}
  	}
	return resultObj;
}

作者答案

function myFunction(arr) {
 return arr.reduce((acc, cur) => {
   const firstLetter = cur.toLowerCase().charAt(0);
   return { ...acc, [firstLetter]: [...(acc[firstLetter] || []), cur] };
 }, {});
}

涉及知識(toLowerCase()方法、相等操作符、push()方法、reduce()方法、charAt()方法、擴展運算符)

toLowerCase()

  • 把字元串轉換為小寫。

格式

stringObject.toLowerCase()

返回值:新的字元串,所有大寫字元全部被轉換為了小寫字元



相等操作符

點擊此處跳轉



push()方法

點擊此處跳轉



reduce()方法

點擊此處跳轉



charAt()方法

  • 返回指定位置的字元,返回字元長度為1。

格式

stringObject.charAt(index)

stringObject:字元串對象

index(字元所在的字元串中的下標):必需

  • 註意:字元串中第一個字元的下標是 0。如果參數 index 不在 0 與 string.length 之間,該方法將返回一個空字元串


擴展運算符

點擊此處跳轉


Define an array with conditional elements

需求:

Write a function that takes an array with arbitrary elements and a number as arguments

Return a new array, the first element should be either the given number itself

or zero if the number is smaller than 6

The other elements should be the elements of the original array

Try not to mutate the original array

我的提交

function myFunction(arr, num) {
   return num>=6? [num].concat(arr):[0].concat(arr);
}

作者答案

function myFunction(arr, num) {
 return [...(num > 5 ? [num] : [0]), ...arr];
}

涉及知識(不改變原數組的方法、擴展運算符、三目運算符)

不改變原數組的方法

不改變原數組的方法 描述
concat 返回拼接後的數組,不改變原數組;
forEach 遍曆數組
map
join() 返回拼接後的字元串,可以指定間隔;
slice(start,end); 截取數組,返回截取的部分,不改變原始數組;
sort(); 排序
toString(); [1,2,3].toString()==[1,2,3].join();


擴展運算符

點擊此處跳轉



三目運算符

點擊此處跳轉


Get every nth element of array

需求:

Write a function that takes an array (a) and a value (n) as arguments

Save every nth element in a new array

Return the new array

我的提交

function myFunction(a, n){
	var arr=[];
	for(var i=0;i<a.length;i++){
   		if((i+1)%n==0){
      	arr.push(a[i]);
   		}
	}
	return arr;
}

作者答案

function myFunction(a, n) {
   let rest = [...a];
   let result = [];
   for (let i = 0; i < a.length; i++) {
      if (rest.length < n) break;
      result.push(rest[n - 1]);
      rest = rest.slice(n);
   }
   return result;
}

涉及知識(擴展運算符、push()方法、slice()方法)

擴展運算符

點擊此處跳轉



push()方法

點擊此處跳轉



slice()方法

點擊此處跳轉


結語

【創作背景】

​ 偶然在抖音上刷到JSchallenger這個可以訓練Javascript基礎的網站,自己在完成所有的Schallenger題之後,想要通過博客來記錄自己的做題痕跡,以便日後快速回顧。原本打算把JSchallenger的所有題目以及分析整理成一篇博客發出來,但是我整理完後發現,已經快有1w多字,為了方便讀者和自己觀看,因此打算按照JSchallenger的板塊分開發佈。


【感謝】

感謝各位讀者能看到最後!!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文介紹如何用 AND 和 OR 操作符組合成 WHERE 子句以建立功能更強、更高級的搜索條件。我們還介紹瞭如何使用 NOT 和 IN 操作符。 一、組合 WHERE 子句 在 如何使用 SQL WHERE 過濾返回的數據 中介紹的所有 WHERE 子句在過濾數據時使用的都是單一的條件。 為了進行 ...
  • 本期「OpenHarmony 開源貢獻者計劃」以“戰碼先鋒,PR 徵集令”為主題,圍繞 OpenHarmony 401 個主幹倉,發起獎勵提交 PR(Pull Request)的活動。 ...
  • 4月26日晚上19點,知識賦能第五期第一節課《精益開源——理解設計思維、精益創業、敏捷開發是如何應用到開源項目中》,在OpenHarmony開發者成長計劃社群內成功舉行。 ...
  • 馬蜂窩的首頁是非常正能量,青春的網頁,首頁非常大氣 logo在上一篇我們已經製作好,現在我們開始製作導航條 這個導航條字數不等,寬窄不一致,就是所有的li不一樣寬,字多就寬,字少就窄,需要用padding去撐 pandding:0 10px; 實現如下 1、index.html里body->head ...
  • 實驗環境 軟體版本 操作系統: Fedora35 // on Fedora35 nodejs-16.14.0-2.fc35.x86_64 npm-8.3.1-1.16.14.0.2.fc35.x86_64 yarnpkg-1.22.10-3.fc35.noarch 軟體包說明 nodejs: nod ...
  • 背景 今天突然碰到了一個相容性需求,需要根據不同 macOS 版本,進行不同的相容性處理。 沒想到看似簡單的需求,中間也經歷了一番波折,好在最後解決了問題。 在此記錄一下解決問題的過程,也方便其他有類似需求的同學參考。 獲取系統類型 既然需要針對 mac 系統進行相容性處理,首先需要區分系統類型,好 ...
  • 一.部署到阿裡雲伺服器 既然博客也已經成功在本地部署,然後主題也成功安裝,接下來就可以部署到伺服器上面了,如果你也想要魔改matery主題,可以去各種博客上面找一找大佬的教程,或者聯繫我,也可以讓你少走一些彎路(❁´◡`❁)。 1.部署到伺服器需要做的事情 首先需要在阿裡雲上面購買一臺伺服器,然後購 ...
  • 前言 本篇文章會從本地(Windows 10)搭建-主題更換-部署阿裡雲詳細步驟,如果在搭建過程中,遇到問題,可以通過博客頁腳下的QQ聯繫我,或者在下麵評論留言 一.本地搭建 1.安裝前置 1.1安裝git 在git官網下載最新版本的git即可,因為本地是Windows所以下載Windows版本即可 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...