为什么数组+数组returns一个字符串?
Why array + array returns a string?
为什么对 2 个数组求和会连接字符串中的所有内容,连接第一个值和最后一个值:
let array = [1, 2]
let array2 = [3, 4]
let array3 = array + array2
console.log(array3) // 1,23,4
这就是 JavaScript 的工作原理。两者都是对象,Array 和 Array 之间没有为 +
定义的东西,所以它会默认转换为 String 并将它们连接起来(仍然作为 String)。
使用 Array.prototype.concat
方法来实现您的目标。
let array = [1, 2]
let array2 = [3, 4]
let array3 = array.concat(array2);
console.log(array3) // [1, 2, 3, 4]
或者,您可以使用扩展运算符:
let array = [1, 2]
let array2 = [3, 4]
let array3 = [...array, ...array2];
console.log(array3) // [1, 2, 3, 4]
Javascript 尝试变得聪明并弄清楚您要做什么。加号表示添加两个字符串,因此 Javascript 继续并首先为您将数组转换为字符串。多好,对吧?
你要做的是实现 concat 方法:
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2)
因为 +
运算符根据给定操作数的类型而有所不同。
- 如果两个操作数都是数字,则执行 sum。
- 如果其中一个操作数不是数字,则两个操作数都转换为字符串(使用 .toString)和 连接。
在您的示例中,您可能会注意到:
array + array2 == array.toString() + array2.toString()
为什么对 2 个数组求和会连接字符串中的所有内容,连接第一个值和最后一个值:
let array = [1, 2]
let array2 = [3, 4]
let array3 = array + array2
console.log(array3) // 1,23,4
这就是 JavaScript 的工作原理。两者都是对象,Array 和 Array 之间没有为 +
定义的东西,所以它会默认转换为 String 并将它们连接起来(仍然作为 String)。
使用 Array.prototype.concat
方法来实现您的目标。
let array = [1, 2]
let array2 = [3, 4]
let array3 = array.concat(array2);
console.log(array3) // [1, 2, 3, 4]
或者,您可以使用扩展运算符:
let array = [1, 2]
let array2 = [3, 4]
let array3 = [...array, ...array2];
console.log(array3) // [1, 2, 3, 4]
Javascript 尝试变得聪明并弄清楚您要做什么。加号表示添加两个字符串,因此 Javascript 继续并首先为您将数组转换为字符串。多好,对吧?
你要做的是实现 concat 方法:
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2)
因为 +
运算符根据给定操作数的类型而有所不同。
- 如果两个操作数都是数字,则执行 sum。
- 如果其中一个操作数不是数字,则两个操作数都转换为字符串(使用 .toString)和 连接。
在您的示例中,您可能会注意到:
array + array2 == array.toString() + array2.toString()