JavaScript:将对象转换为对象数组

Bor*_*kov 2 javascript arrays

我有数以千计的遗留代码,用于将数组信息存储在非数组中.

例如:

container.object1 = someobject;
container.object2 = someotherobject;
container.object3 = anotherone;
Run Code Online (Sandbox Code Playgroud)

我想要的是:

container.objects[1], container.objects[2], container.objects[3] etc.
Run Code Online (Sandbox Code Playgroud)

名称的"对象"部分是不变的.数字部分是它应该在数组中的位置.

我该怎么做呢?

jfr*_*d00 6

假设object1,object2等是顺序的(如数组),那么你可以遍历容器对象并找到所有存在的顺序objectN属性并将它们添加到数组中并在缺少一个循环时停止循环.

container.objects = [];  // init empty array
var i = 1;
while (container["object" + i]) {
    container.objects.push(container["object" + i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

如果你想的第一个项目object1是在[1]现场,而不是更典型的[0]阵列中的点,那么你需要把一个空的对象放入数组的零槽下手,因为你的例子没有一个object0项目.

container.objects = [{}];  // init array with first item empty as an empty object
var i = 1;
while (container["object" + i]) {
    container.objects.push(container["object" + i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)