簡體   English   中英

JavaScript:將對象轉換為對象數組

[英]JavaScript: convert objects to array of objects

我有數以千計的遺留代碼,用於將數組信息存儲在非數組中。

例如:

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]點,那么你需要將一個空對象放入數組的第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++;
}

另一種方法是使用keys

var unsorted = objectwithobjects;
var keys = Object.keys(unsorted);
var items = [];
for (var j=0; j < keys.length; j++) {
  items[j] = unsorted[keys[j]];
}

您可以添加一個if語句來檢查一個鍵是否包含'object',並且在這種情況下只向您的條目添加一個元素(如果'objectwithobjects'包含您不想要的其他鍵)。

這很簡單:

var c = { objects: [] };

for (var o in container) {
    var n = o.match(/^object(\d+)$/);
    if (n) c.objects[n[1]] = container[o];
}

現在c是你的新容器對象,其中c.object[1] == container.object1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM