我有一个很难描述的问题。这是两个阵列的故事。
我有一个包含50个对象的数组。每个对象,我想调用它的特定属性"IDnumber"
。
第二个数组是包含5个变量的数组,其中包含所有提到的50个对象的"IDnumber"
属性,每个变量都有一组10个IDnumbers:var1
是ID的数字。前10个对象,var2
是第二组的IDnumbers,依此类推,直到第50个对象的ID号。
这是变得艰难的地方。 如果我想在第一个数组中添加一个新对象,那么就有51个对象,那么我想用第6个变量更新第二个数组,其中包含所有剩余的对象' IDnumber(在这种情况下只是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个对象&#39; IDnumbers。
答案 0 :(得分: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;
}
答案 1 :(得分: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; }