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

raj*_*jat 0 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;
        }
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解这些方面发生了什么:

vector[vector.length] = newX;
vector[vector.length] = newY;
Run Code Online (Sandbox Code Playgroud)

覆盖数组中相同位置的值有什么作用?

mea*_*gar 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]
Run Code Online (Sandbox Code Playgroud)

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

my_vector.push_back(newX);
Run Code Online (Sandbox Code Playgroud)