为什么concat方法不会影响数组的length属性?

时间:2013-08-31 11:35:25

标签: javascript

我不知道为什么这不起作用:

var test = ["String", 300];
var other = test.concat(500);
alert(test[2]);

alert(test.length) // 1 not 2

是否有一种方法允许人们将元素添加到现有数组并使其像上面一样可访问?

4 个答案:

答案 0 :(得分:5)

concat()会返回 new 数组。你想要的是push()

test.push(500);

演示看看差异:

> var test = ["String", 300];
> var other = test.concat(500);
> test
[ 'String', 300 ]
> other
[ 'String', 300, 500 ]

> test.push(1234)
> test
[ 'String', 300, 1234 ]
> other
[ 'String', 300, 500 ]

答案 1 :(得分:3)

如果您尝试向此数组添加元素,请使用 push -

var test = ["String", 300];
test.push(500);

alert(test[2]);  // will alert 500
alert(test.length); // will alert 3

如果您只想将元素添加到现有数组,那么它比concat容易得多。

答案 2 :(得分:3)

您可以使用不同的运算符向数组添加新元素,因为JavaScript是一种非常灵活的语言。

您可以使用push()

var test = ["String", 300];
test.push(500);

或者在数组的下一个索引处添加一个新元素:

var test = ["String", 300];
test[test.length] = 500;

或者在问题中使用concat()

var test = ["String", 300];
var other = test.concat(500);
    ^^^^^

在最后一个示例中,结果连接保存在其他变量中(不是测试)。

other == ["String", 300, 500]

答案 3 :(得分:1)

您可以使用下面的push方法向现有数组添加元素。

test.push(500);

编辑: concat()返回ThiefMaster已经指出的新数组。

Demo