我想将一个数组的元素添加到另一个数组中,所以我尝试了这样做:
[1,2] + [3,4]
它的答复是:
"1,23,4"
这是怎么回事?
我想将一个数组的元素添加到另一个数组中,所以我尝试了这样做:
[1,2] + [3,4]
它的答复是:
"1,23,4"
这是怎么回事?
当前回答
它像添加字符串一样添加两个数组。
第一个数组的字符串表示形式是“1,2”,第二个数组是“3,4”。因此,当找到+号时,它不能对数组求和,然后将它们作为字符串连接起来。
其他回答
另一个使用简单的“+”符号的结果是:
[1,2]+','+[3,4] === [1,2,3,4]
所以像这样的东西应该工作(但是!):
var a=[1,2];
var b=[3,4];
a=a+','+b; // [1,2,3,4]
... 但它会将变量a从数组转换为字符串!记住这一点。
+连接字符串,因此它将数组转换为字符串。
[1,2] + [3,4]
'1,2' + '3,4'
1,23,4
要组合数组,使用concat。
[1,2].concat([3,4])
[1,2,3,4]
它将单个数组转换为字符串,然后组合字符串。
Some answers here have explained how the unexpected undesired output ('1,23,4') happens and some have explained how to obtain what they assume to be the expected desired output ([1,2,3,4]), i.e. array concatenation. However, the nature of the expected desired output is actually somewhat ambiguous because the original question simply states "I wanted to add the elements of an array into another...". That could mean array concatenation but it could also mean tuple addition (e.g. here and here), i.e. adding the scalar values of elements in one array to the scalar values of the corresponding elements in the second, e.g. combining [1,2] and [3,4] to obtain [4,6].
假设两个数组都有相同的arity/length,这里有一个简单的解决方案:
Const arr1 = [1,2]; Const arr2 = [3,4]; Const add = (a1, a2) => a1。Map ((e, i) => e + a2[i]); console.log(添加(arr1 arr2));// ==> [4,6]
这是因为,+运算符假设操作数是字符串,如果它们不是数字。因此,如果它不是一个数字,它首先将它们转换为字符串和连接,以给出最终结果。此外,它不支持数组。