亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
問題分析
解決方案
總結(jié)
首頁 web前端 js教程 從 TypeScript 數(shù)組中獲取最後 N 個元素

從 TypeScript 數(shù)組中獲取最後 N 個元素

Oct 16, 2025 pm 01:42 PM

從 TypeScript 數(shù)組中獲取最後 N 個元素

本文介紹瞭如何使用TypeScript 從數(shù)組中提取最後N 個元素。我們將討論在數(shù)組長度滿足特定條件時返回原數(shù)組,否則返回數(shù)組的後N 個元素的方法,並提供代碼示例和改進方案,幫助開發(fā)者更靈活地處理數(shù)組數(shù)據(jù)。

問題分析

原始代碼存在一些問題:

  1. 邏輯錯誤:使用|| (OR) 運算符判斷數(shù)組長度是否在2 到10 之間是不正確的。應(yīng)該使用&& (AND) 運算符來確保數(shù)組長度同時大於等於2 且小於等於10。
  2. 數(shù)組創(chuàng)建:代碼中創(chuàng)建了一個新的數(shù)組result,並將傳入的name 和schedule 包裝成一個對像後放入數(shù)組。這導(dǎo)致函數(shù)始終返回一個包含一個元素的數(shù)組,而不是操作傳入的數(shù)組。
  3. 切片數(shù)量錯誤:原始代碼中slice(-9) 試圖返回倒數(shù)第9 個元素到最後一個元素,而題目要求返回最後10 個元素。

解決方案

以下是修正後的代碼,它接受一個數(shù)組作為輸入,並根據(jù)數(shù)組長度返回不同的結(jié)果:

 interface ScheduleItem {
  course: string;
  hours: number;
}

interface Schedule {
  name: string;
  schedule: ScheduleItem[];
}

export const sliceData = (dataToSlice: Schedule[], fromLastElement: number = 10): Schedule[] => {

  if (dataToSlice.length >= 2 && dataToSlice.length <p><strong>代碼解釋:</strong></p><ol>
<li>
<strong>接口定義:</strong>定義了ScheduleItem 和Schedule 接口,用於類型註解,提高代碼可讀性和可維護性。</li>
<li>
<strong>函數(shù)簽名:</strong> sliceData 函數(shù)接受兩個參數(shù):<ul>
<li> dataToSlice: 要處理的Schedule 類型的數(shù)組。</li>
<li> fromLastElement: 可選參數(shù),表示要返回的最後元素的數(shù)量,默認為10。</li>
</ul>
</li>
<li>
<strong>條件判斷:</strong>使用dataToSlice.length >= 2 && dataToSlice.length </li>
<li>
<strong>數(shù)組切片:</strong>如果數(shù)組長度不在2 到10 之間,則使用dataToSlice.slice(-fromLastElement) 返回數(shù)組的最後fromLastElement 個元素。 slice() 方法的負數(shù)索引表示從數(shù)組末尾開始計數(shù)。</li>
</ol><h3>使用示例</h3><pre class="brush:php;toolbar:false">const myArr: Schedule[] = [
  { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
  { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
  { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] }
];

const slicedArray = sliceData(myArr); // 返回myArr (因為長度小於等於10)
console.log(slicedArray);

const longArray: Schedule[] = [
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] }
];
const slicedLongArray = sliceData(longArray); // 返回longArray 的最後10 個元素console.log(slicedLongArray);

const slicedLongArrayCustom = sliceData(longArray, 5); // 返回longArray 的最後5 個元素console.log(slicedLongArrayCustom);

總結(jié)

本文提供了一個TypeScript 函數(shù),用於從數(shù)組中提取最後N 個元素。通過修正原始代碼中的邏輯錯誤,並添加了類型註解和可選參數(shù),使函數(shù)更加健壯、靈活和易於使用。 開發(fā)者可以根據(jù)實際需求調(diào)整fromLastElement 參數(shù),以獲取所需數(shù)量的最後元素。

以上是從 TypeScript 數(shù)組中獲取最後 N 個元素的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

JavaScript實現(xiàn)點擊圖片切換效果:專業(yè)教程 JavaScript實現(xiàn)點擊圖片切換效果:專業(yè)教程 Sep 18, 2025 pm 01:03 PM

本文將介紹如何使用JavaScript實現(xiàn)點擊圖片切換的效果。核心思路是利用HTML5的data-*屬性存儲備用圖片路徑,並通過JavaScript監(jiān)聽點擊事件,動態(tài)切換src屬性,從而實現(xiàn)圖片切換。本文將提供詳細的代碼示例和解釋,幫助你理解和掌握這種常用的交互效果。

如何使用JavaScript中的GeOlocation API獲取用戶的位置? 如何使用JavaScript中的GeOlocation API獲取用戶的位置? Sep 21, 2025 am 06:19 AM

首先檢查瀏覽器是否支持GeolocationAPI,若支持則調(diào)用getCurrentPosition()獲取用戶當前位置坐標,並通過成功回調(diào)獲取緯度和經(jīng)度值,同時提供錯誤回調(diào)處理權(quán)限被拒、位置不可用或超時等異常,還可傳入配置選項以啟用高精度、設(shè)置超時時間和緩存有效期,整個過程需用戶授權(quán)並做好相應(yīng)錯誤處理。

NUXT 3組成API解釋了 NUXT 3組成API解釋了 Sep 20, 2025 am 03:00 AM

Nuxt3的CompositionAPI核心用法包括:1.definePageMeta用於定義頁面元信息,如標題、佈局和中間件,需在中直接調(diào)用,不可置於條件語句中;2.useHead用於管理頁面頭部標籤,支持靜態(tài)和響應(yīng)式更新,需與definePageMeta配合實現(xiàn)SEO優(yōu)化;3.useAsyncData用於安全地獲取異步數(shù)據(jù),自動處理loading和error狀態(tài),支持服務(wù)端和客戶端數(shù)據(jù)獲取控制;4.useFetch是useAsyncData與$fetch的封裝,自動推斷請求key,避免重複請

如何在JavaScript中使用setInterval創(chuàng)建重複間隔 如何在JavaScript中使用setInterval創(chuàng)建重複間隔 Sep 21, 2025 am 05:31 AM

要創(chuàng)建JavaScript中的重複間隔,需使用setInterval()函數(shù),它會以指定毫秒數(shù)為間隔重複執(zhí)行函數(shù)或代碼塊,例如setInterval(()=>{console.log("每2秒執(zhí)行一次");},2000)會每隔2秒輸出一次消息,直到通過clearInterval(intervalId)清除,實際應(yīng)用中可用於更新時鐘、輪詢服務(wù)器等場景,但需注意最小延遲限制、函數(shù)執(zhí)行時間影響,並在不再需要時及時清除間隔以避免內(nèi)存洩漏,特別是在組件卸載或頁面關(guān)閉前應(yīng)清理,確保

如何將文本複製到JavaScript中的剪貼板? 如何將文本複製到JavaScript中的剪貼板? Sep 18, 2025 am 03:50 AM

使用ClipboardAPI的writeText方法可複製文本到剪貼板,需在安全上下文和用戶交互中調(diào)用,支持現(xiàn)代瀏覽器,舊版可用execCommand降級處理。

如何在JavaScript中創(chuàng)建多行字符串? 如何在JavaScript中創(chuàng)建多行字符串? Sep 20, 2025 am 06:11 AM

thebestatoreateamulti-linestlinginjavascriptsisisingsistisingtemplatalalswithbacktticks,whatpreserveticks,whatpreservereakeandeexactlyaswrite。

如何在JavaScript中創(chuàng)建和使用立即調(diào)用的函數(shù)表達式(IIFE) 如何在JavaScript中創(chuàng)建和使用立即調(diào)用的函數(shù)表達式(IIFE) Sep 21, 2025 am 05:04 AM

Aniife(立即InvokedFunction表達)IsafunctionThatrunSassoonAsisition定義,createByWrappingAppappingAptappafunctionInparenthensessandMmedImmedImmedInvokingit,whopreventsglobalnamespacepacepallutionpallutionpallutionPollutionPollutionPollutionAndEnablesPrivatesScopethroughCloseconscopethroughClosecome; itiswritten; itiswritten; itiswrittenas(iTiswrittenas;

如何將JSON字符串解析到JavaScript對像中 如何將JSON字符串解析到JavaScript對像中 Sep 21, 2025 am 05:43 AM

要將JSON字符串解析為JavaScript對象,應(yīng)使用JSON.parse()方法,它能將有效的JSON字符串轉(zhuǎn)換為對應(yīng)的JavaScript對象,支持嵌套對象和數(shù)組的解析,但對無效JSON會拋出錯誤,因此需用try...catch處理異常,同時可通過第二個參數(shù)的reviver函數(shù)在解析時轉(zhuǎn)換值,如將日期字符串轉(zhuǎn)為Date對象,從而實現(xiàn)安全可靠的數(shù)據(jù)轉(zhuǎn)換。

See all articles