網站首頁 編程語言 正文
總覽
當我們對一個不是數組的值調用map()
方法時,就會產生"TypeError: map is not a function"
錯誤。為了解決該錯誤,請將你調用map()
方法的值記錄在console.log
上,并確保只對有效的數組調用map
。
這里有個示例來展示錯誤是如何發生的。
const App = () => { const obj = {}; // ?? Uncaught TypeError: map is not a function return ( <div> {obj.map(element => { return <h2>{element}</h2>; })} </div> ); }; export default App;
我們在一個對象上調用Array.map()
方法,得到了錯誤反饋。
為了解決該錯誤,請console.log
你調用map
方法的值,確保它是一個有效的數組。
export default function App() { const arr = ['one', 'two', 'three']; return ( <div> {arr.map((element, index) => { return ( <div key={index}> <h2>{element}</h2> </div> ); })} </div> ); }
Array.isArray
你可以通過使用Array.isArray
方法,來有條件地檢查值是否為數組。
const App = () => { const obj = {}; return ( <div> {Array.isArray(obj) ? obj.map(element => { return <h2>{element}</h2>; }) : null} </div> ); }; export default App;
如果值為數組,則返回對其調用map
方法的結果,否則返回null
。這種方式不會得到錯誤,即使值不是一個數組。
如果值是從遠程服務中獲取,請確保它是你期望的類型,將其記錄到控制臺,并確保你在調用
map
方法之前將其解析為一個原生JavaScript數組。
Array.from
如果有一個類數組對象,在調用map
方法之前你嘗試轉換為數組,可以使用Array.from()
方法。
const App = () => { const set = new Set(['one', 'two', 'three']); return ( <div> {Array.from(set).map(element => { return ( <div key={element}> <h2>{element}</h2> </div> ); })} </div> ); }; export default App;
在調用map
方法之前,我們將值轉換為數組。這也適用于類數組的對象,比如調用getElementsByClassName
方法返回的NodeList
。
Object.keys
如果你嘗試迭代遍歷對象,使用Object.keys()
方法獲取對象的鍵組成的數組,在該數組上可以調用map()
方法。
export default function App() { const employee = { id: 1, name: 'Alice', salary: 100, }; return ( <div> {/* ??? iterate object KEYS */} {Object.keys(employee).map((key) => { return ( <div key={key}> <h2> {key}: {employee[key]} </h2> <hr /> </div> ); })} <br /> <br /> <br /> {/* ??? iterate object VALUES */} {Object.values(employee).map((value, index) => { return ( <div key={index}> <h2>{value}</h2> <hr /> </div> ); })} </div> ); }
我們使用Object.keys
方法得到對象的鍵組成的數組。
const employee = { id: 1, name: 'Alice', salary: 100, }; // ??? ['id', 'name', 'salary'] console.log(Object.keys(employee)); // ??? [1, 'Alice', 100] console.log(Object.values(employee));
我們只能在數組上調用map()
方法,所以我們需要獲得一個對象的鍵或者對象的值的數組。
原文鏈接:https://juejin.cn/post/7118954918198640654
相關推薦
- 2022-03-29 docker?安裝?zeppeline的操作_docker
- 2023-06-20 一文徹底理清session、cookie、token的區別_相關技巧
- 2023-01-17 Golang排序和查找使用方法介紹_Golang
- 2022-12-22 C++?Boost?Foreach超詳細分析講解_C 語言
- 2022-10-17 Go使用select切換協程入門詳解_Golang
- 2022-05-27 C++的STL中accumulate函數的使用方法_C 語言
- 2022-10-22 Kotlin淺析null操作方法_Android
- 2022-08-28 點在多邊形內判定模板(射線法,凹凸多邊形均可)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支