TypeError: map.get 不是 JavaScript 中的函数 [已解决]

目录

TypeError: map.get is not a function in JavaScript

  1. 类型错误:map.get 不是 JavaScript 中的函数
  2. 类型错误:map.has 不是 JavaScript 中的函数

TypeError: map.get 不是 JavaScript 中的函数

“TypeError: map.get is not a function”错误发生在我们
对一个不是
对象
get()的值调用方法时。Map

要解决此错误,请Map在调用方法之前将值转换为 aget
或确保仅对
Map对象调用该方法。

typeerror map get 不是一个函数

下面是错误如何发生的示例。

索引.js
const map = {}; // ⛔️ TypeError: map.get is not a function const result = map.get('name');

我们在一个对象上调用了
Map.get
方法并返回了错误。

确保只调用对象get上的方法Map

要解决该错误,请确保仅调用对象get上的方法Map

索引.js
const map = new Map([ ['name', 'Tim'], ['country', 'Chile'], ]); console.log(map.get('name')); // 👉️ Tim console.log(map.get('test')); // 👉️ undefined

Map() 构造函数采用

一个可迭代对象,其元素是键值对,例如数组的数组,并返回一个
Map对象。

每个数组中的第一个元素是键,第二个是值。

Map在调用之前检查对象是否为 a get()

或者,您可以Map使用instanceof
运算符检查对象是否为 a。

索引.js
const map = new Map([ ['name', 'Tim'], ['country', 'Chile'], ]); if (map instanceof Map) { const result = map.get('name'); console.log(result); // 👉️ "Tim" }

instanceof运算符允许我们检查对象是否是使用
Map()构造函数创建的。

索引.js
const map = new Map([ ['name', 'Tim'], ['country', 'Chile'], ]); console.log([] instanceof Map); // 👉️ false console.log({} instanceof Map); // 👉️ false console.log(map instanceof Map); // 👉️ true

如果对象是
类的实例,则返回,
否则
operator返回trueMapfalse

Map在调用get()方法之前将对象转换为 a

如果您需要将对象转换为Map,请使用该Object.entries()方法。

索引.js
const obj = { id: 1, name: 'James', }; // ✅ Convert Object to Map const map1 = new Map(Object.entries(obj)); console.log(map1); // 👉️ {'id' => 1, 'name' => 'James'} // ✅ Convert Map to Object const objAgain = Object.fromEntries(map1); console.log(objAgain); // 👉️ {id: 1, name: 'James'}

Object.entries方法返回对象的

键值对数组。

索引.js
const obj = { id: 1, name: 'James', }; // 👇️ [ [ 'id', 1 ], [ 'name', 'James' ] ] console.log(Object.entries(obj));

我们可以将一个数组的数组传递给Map()构造函数来创建一个Map
对象。
每个嵌套数组应包含 2 个元素 – 一个键和一个值。

TypeError: map.has 不是 JavaScript 中的函数

“Map.has is not a function”错误发生在我们对一个不是对象has()的值调用方法时。Map

To solve the error, convert the value to a Map before calling the has
method or make sure to only call the method on Map objects.

typeerror 映射有不是函数

Here is an example of how the error occurs.

index.js
const map = {}; // ⛔️ TypeError: map.has is not a function const result = map.has('name');

We called the
Map.has()
method on an object, so the error occurred.

To solve the error, make sure to only call the has() method on Map objects.

index.js
const map = new Map([ ['name', 'James'], ['age', 30], ]); console.log(map.has('name')); // 👉️ true console.log(map.has('bar')); // 👉️ false

Alternatively, you can check if the object is a Map by using the instanceof
operator.

index.js
const map = new Map([ ['name', 'James'], ['age', 30], ]); if (map instanceof Map) { const result = map.has('name'); console.log(result); // 👉️ true }

The instanceof operator allows us to check if an object was created using the
Map() constructor.

index.js
const map = new Map([ ['name', 'James'], ['age', 30], ]); console.log('hello' instanceof Map); // 👉️ false console.log({} instanceof Map); // 👉️ false console.log(map instanceof Map); // 👉️ true

If you need to convert an object to a Map, use the Object.entries() method.

index.js
const obj = { id: 1, name: 'James', }; // ✅ Convert Object to Map const map1 = new Map(Object.entries(obj)); console.log(map1); // 👉️ {'id' => 1, 'name' => 'James'} // ✅ Convert Map to Object const objAgain = Object.fromEntries(map1); console.log(objAgain); // 👉️ {id: 1, name: 'James'}

我们可以将数组的数组传递给Map构造函数以创建一个Map. 每个嵌套数组应包含 2 个元素 – 一个键和一个值。