2016-12-28 59 views
0

我有一個難以描述的問題。這是兩個數組的故事。 我有一個數組包含50個對象。每個對象,我想調用它的特定屬性"IDnumber"基於另一個陣列中的較新對象更新數組

第二陣列是一個具有包含所有提到的50個對象的"IDnumber"屬性的5個變量,與具有一組10個IDnumbers每個變量:var1是第10個對象的IDnumbers,var2是也是該IDnumbers第二組等,直到第50個對象的ID號。

這是困難的地方。 如果我想在第一個數組中添加一個新對象,這樣就會有51個對象,那麼我想用第6個變量更新第2個數組,這個變量包含所有剩餘對象的ID號(在這種情況下只是1)。我想array2的長度依賴於array1的長度。

var arr1 = [], obj = {"IDNumber": "1"}; 
//this is an example array, all objects have the same ID here, but not in my real array 
for (var i = 0; i < 51; i++) { 
    arr1.push(obj); 
} 

var var1 = [arr1[0]["IDNumber"], arr1[1]["IDNumber"], arr1[2]["IDNumber"], arr1[3]["IDNumber"], arr1[4]["IDNumber"], arr1[5]["IDNumber"], arr1[6]["IDNumber"], arr1[7]["IDNumber"], arr1[8]["IDNumber"], arr1[9]["IDNumber"]]; 
//the other remaining possible variables. 

var arr2 = [var1, ...]; //No clue as how to take that on 

我該怎麼做?我如何創建一個數組,使用更新的可能變量來更新自己?每個變量必須有最多10個對象的ID號。

+3

你不需要做任何特別的事情。 'arr2 [0]'是對'var1'引用的同一個數組的引用,而不是數組的副本。如果您修改陣列,您將在兩個地方看到它。 – Barmar

+1

所以,如果你做'var1.push(something)',你會在'arr2 [0]'末尾看到這個。 – Barmar

回答

2

假設array1包含您的對象數組。另一種是含有數組的數組array2,每個子陣列具有長度10等你陳述

您可以分割array1成10組,並把在array2這樣

function slice10(arraysOfObject) { 
    var array2 = []; 
    var leftOver = arraysOfObject.length % 10; 
    var groupsOfTen = (arraysOfObject.length - leftOver)/10; 
    for (var i = 0; i < groupsOfTen; i++) { 
     array2.push([]); 
     for (var j = i*10; j < i*10 + 10; j++) 
      array2[i].push(arraysOfObject[j]["IDNumber"]); 
    } 

    //now take care of the leftover 
    if (leftOver > 0) { 
     array2.push([]); 
     for (var i = groupsOfTen*10; i < arraysOfObject.length; i++) 
      array2[array2.length-1].push(arraysOfObject[i]["IDNumber"]); 
    } 
    return array2; 
} 
+0

很好的幫助,謝謝。所以'array2'是'array1'中的所有數組,可以分成10個組,我可以通過它的[element]數來訪問它的每個組。但如果我添加更多的對象,我將不得不手動調用這些組。我如何處理1個數組中的所有這些數組的故事,所以我不需要並且它會自動執行? – TheNuttyStudent

+0

嗨。我已經將所有東西都包裝在一個函數中,所以當添加新對象時,可以調用它來重組第一個數組。所以基本上,每次添加新對象時都必須重新組合。如果你不想這樣做,看看另一個答案,但要小心這個答案的副作用。始終追求功能的純潔 – Dummy

1

可以創建一個功能處理添加對象的兩個不同的數據結構,並使用該函數也用於將第一物體50:

function addObject(arr1, arr2, obj) { 
 
    if (arr1.length % 10 == 0) arr2.push([]); 
 
    arr1.push(obj); 
 
    arr2[arr2.length-1].push(obj.IDNumber); 
 
} 
 

 
var arr1 = [], arr2 = []; 
 
for (var i = 0; i < 51; i++) { 
 
    addObject(arr1, arr2, {"IDNumber": i + 1000}); // some dummy ID value 
 
} 
 

 
console.log(arr2);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題