向数组元素添加数字时发生了什么

时间:2016-06-03 11:58:59

标签: javascript arrays string

示例1:

Var arr = [1,2,3] + 1;

console.log(arr) // "1,2,31"
typeof arr // String

示例2:

var arr = 5 + ["h","e","l","l","o"];

console.log(arr) // "5h,e,l,l,o";
typeof arr // String

执行上述操作将数字/字符串连接到数组中的最后一个/第一个元素。想了解这里发生了什么?

2 个答案:

答案 0 :(得分:2)

当您使用+(在这种情况下连接)时,它会将 toString() 方法应用于数组。所以它只是与结果连接而不是追加到最后一个或第一个元素。

  

Array对象会覆盖Object的toString方法。 对于Array对象,toString方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素

     

当数组要表示为文本值或在字符串连接中引用数组时,JavaScript会自动调用toString方法。 ( Taken from here

检查以下片段所有结果是否相同。



var arr = [1, 2, 3];

// all these are providing the same result 
// result of toString method
console.log(arr.toString())
// concatenation with empty string at end
console.log(arr + "")
// concatenation with empty string at start
console.log("" + arr);




答案 1 :(得分:0)

要向数组添加元素,请使用以下方法之一。

正如@Pranav C Balan提到+运算符尝试连接2个值。这是Javascript中最奇怪的部分之一。这是一个非常有用的页面,包含所有细微之处JS Garden

示例1:

Var arr = [1,2,3];
arr.push(1)


console.log(arr) // [1,2,3,1]
typeof arr // object

示例2:

var arr = ["h","e","l","l","o"];
arr.unshift(5);

console.log(arr) // [5,"h","e","l","l","o"];
typeof arr // object