我有数以千计的遗留代码,用于将数组信息存储在非数组中.
例如:
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)
名称的"对象"部分是不变的.数字部分是它应该在数组中的位置.
我该怎么做呢?
假设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)