array [array.length] = value在JavaScript中完成了什么?

时间:2012-08-13 18:11:42

标签: javascript c++ arrays

我正在尝试将以下JavaScript代码移植到C ++:

var vector = new array();     
for (var i = 0; i < points.length; i++)
        {
            var newX = points[i].X * cos - points[i].Y * sin;
            var newY = points[i].Y * cos + points[i].X * sin;
            vector[vector.length] = newX;
            vector[vector.length] = newY;
            sum += newX * newX + newY * newY;
        }

我似乎无法理解这些内容正在发生的事情:

vector[vector.length] = newX;
vector[vector.length] = newY;

用于覆盖数组中相同位置的值的目的是什么?

3 个答案:

答案 0 :(得分:7)

JavaScript数组动态扩展以容纳新元素,因此要附加新项目,只需分配给下一个可用索引。

数组索引从零开始,因此给定一个名为“vector”的数组,vector.length是最后一个元素之后的一个。什么都没有被覆盖;第vector[vector.length] = x行将x追加到数组的末尾。

在JavaScript中,以下附加元素的方法是相同的,但使用push更清楚地表明了您的意图:

vector = [1,2,3];
vector[vector.length] = 4; // [1,2,3,4]
vector.push(5); // [1,2,3,4,5]

等效的C ++代码(假设您正在使用std::vector

my_vector.push_back(newX);

答案 1 :(得分:3)

  

用于覆盖数组中相同位置的值的目的是什么?

没有。它在末尾添加了一个元素,因此增加了vector的大小。

在C ++中,这将转换为push_back

答案 2 :(得分:1)

每次分配到vector.length后,

vector[vector.length]会增加。