类型错误:concat 不是 JavaScript 中的函数 [已解决]

TypeError: concat 不是 JavaScript 中的函数[已解决]

TypeError: concat is not a function in JavaScript

“TypeError: concat is not a function” 当我们concat()
在一个不是数组的值上调用方法时发生。

要解决该错误,请在调用该方法之前将值转换为数组,
concat()或确保仅对concat有效数组调用该方法。

typeerror concat 不是一个函数

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

索引.js
const arr1 = {name: 'Tom'}; const arr2 = [{name: 'James'}]; // ⛔️ TypeError: concat is not a function const arr3 = arr1.concat(arr2);

我们在一个对象上调用了
Array.concat()
方法,这导致了错误。

concat()只在数组上调用方法

要解决该错误,console.log您调用该concat方法的值并确保它是一个有效的数组。

索引.js
const arr1 = [{name: 'Tom'}]; const arr2 = [{name: 'James'}]; const arr3 = arr1.concat(arr2); // 👇️ [{name: 'Tom'}, {name: 'James'}] console.log(arr3);

Array.concat()方法用于合并两个或多个数组。

在调用之前检查该值是否为数组concat()

您可以使用Array.isArray
方法
有条件地检查值是否为数组

索引.js
const arr1 = null; const arr2 = [{name: 'James'}]; const arr3 = Array.isArray(arr1) ? arr1.concat(arr2) : []; console.log(arr3); // 👉️ []

if/else我们使用了三元运算符,它与语句非常相似。

如果值是一个数组,我们返回调用该concat()方法的结果,否则,我们返回一个空数组。

这样,即使值不是数组,您也不会收到错误。

您还可以使用简单的if语句来检查值是否为数组。

索引.js
const arr1 = null; const arr2 = [{name: 'James'}]; let arr3 = []; if (Array.isArray(arr1)) { arr3 = arr1.concat(arr2); } console.log(arr3); // 👉️ []

The if block is only run if the arr1 variable stores an array.

Convert the value to an array before using concat() #

If you have an array-like object, use the Array.from() method to convert it to
an array before calling the concat() method.

index.js
const set1 = new Set(['a', 'b']); const arr1 = ['c', 'd']; const result = Array.from(set1).concat(arr1); console.log(result); // 👉️ ['a', 'b', 'c', 'd']

We converted the Set object to an array before calling the concat method.

You could achieve the same result by using the spread syntax (…).

index.js
const set1 = new Set(['a', 'b']); const arr1 = ['c', 'd']; const result = [...set1].concat(arr1); console.log(result); // 👉️ ['a', 'b', 'c', 'd']

This approach would also work if you’re working with a NodeList or other
array-like objects.

If you have an object, you probably have to access a property on the object that
points to an array before calling the method.

index.js
const arr2 = [{name: 'James'}]; const obj = { arr1: [{name: 'Alice'}], }; const arr3 = obj.arr1.concat(arr2); console.log(arr3); // 👉️ [ { name: 'Alice' }, { name: 'James' } ]

We accessed a property on the object to get an array before calling the
Array.concat() method.

如果该值是从远程服务器获取的,请通过将其记录到控制台来确保它是您期望的类型,并确保在调用该concat方法之前已将其解析为本机 JavaScript 数组。

结论

“TypeError: concat is not a function” 当我们concat()
在一个不是数组的值上调用方法时发生。

要解决该错误,请在调用该方法之前将值转换为数组,
concat()或确保仅对concat有效数组调用该方法。