TypeError: concat 不是 JavaScript 中的函数[已解决]
TypeError: concat is not a function in JavaScript
“TypeError: concat is not a function” 当我们concat()
在一个不是数组的值上调用方法时发生。
要解决该错误,请在调用该方法之前将值转换为数组,
concat()
或确保仅对concat
有效数组调用该方法。
下面是错误如何发生的示例。
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
方法的值并确保它是一个有效的数组。
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
方法有条件地检查值是否为数组
。
const arr1 = null; const arr2 = [{name: 'James'}]; const arr3 = Array.isArray(arr1) ? arr1.concat(arr2) : []; console.log(arr3); // 👉️ []
if/else
我们使用了三元运算符,它与语句非常相似。
如果值是一个数组,我们返回调用该concat()
方法的结果,否则,我们返回一个空数组。
这样,即使值不是数组,您也不会收到错误。
您还可以使用简单的if
语句来检查值是否为数组。
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.
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 (…).
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.
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
有效数组调用该方法。