我有成千上万的遗留代码将数组信息存储在非数组中。
例如:
container.object1 = someobject;
container.object2 = someotherobject;
container.object3 = anotherone;
我想要的是:
container.objects[1], container.objects[2], container.objects[3] etc.
名称的“对象”部分是不变的。数字部分是它应该在数组中的位置。
我该怎么做?
最佳答案
假设 object1、object2 等...是顺序的(如数组),那么您可以遍历容器对象并找到所有存在的顺序 objectN 属性并将它们添加到数组并在以下时停止循环一个不见了。
container.objects = []; // init empty array
var i = 1;
while (container["object" + i]) {
container.objects.push(container["object" + i]);
i++;
}
如果您希望第一个项目 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++;
}
关于JavaScript:将对象转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532714/