Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于另一阵列中较新的对象更新阵列_Javascript_Arrays - Fatal编程技术网

Javascript 基于另一阵列中较新的对象更新阵列

Javascript 基于另一阵列中较新的对象更新阵列,javascript,arrays,Javascript,Arrays,我有一个很难描述的问题。这是一个关于两个阵列的故事。 我有一个数组可以容纳50个对象。对于每个对象,我想调用其特定属性“IDnumber” 第二个数组有5个变量,其中包含上述50个对象的“IDnumber”属性,每个变量有一组10个IDnumber:var1是前10个对象的IDnumber,var2是第二组对象的IDnumber,依此类推,直到第50个对象的ID号 这就是困难所在。 如果我想在第一个数组中添加一个新对象,这样将有51个对象,那么我想用第6个变量更新第二个数组,该变量包含所有剩余对

我有一个很难描述的问题。这是一个关于两个阵列的故事。 我有一个数组可以容纳50个对象。对于每个对象,我想调用其特定属性
“IDnumber”

第二个数组有5个变量,其中包含上述50个对象的
“IDnumber”
属性,每个变量有一组10个IDnumber:
var1
是前10个对象的IDnumber,
var2
是第二组对象的IDnumber,依此类推,直到第50个对象的ID号

这就是困难所在。 如果我想在第一个数组中添加一个新对象,这样将有51个对象,那么我想用第6个变量更新第二个数组,该变量包含所有剩余对象的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
var arr1=[],obj={“IDNumber”:“1”};
//这是一个示例数组,所有对象在这里都有相同的ID,但在我的真实数组中没有
对于(变量i=0;i<51;i++){
arr1.推力(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”];
//其他可能的变量。
var arr2=[var1,…]//不知道该如何应对

我该怎么做?我如何创建一个数组,用新的变量更新它自己?每个变量最多必须有10个对象的ID号。

假设
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;
}
函数切片10(arraysOfObject){
var array2=[];
var剩余=arraysOfObject.length%10;
var groupsoftware=(arraysOfObject.length-leftOver)/10;
对于(变量i=0;i0){
阵列2.推送([]);
对于(var i=groupsoftend*10;i
假设
数组1
包含对象数组。另一个是
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;
}
函数切片10(arraysOfObject){
var array2=[];
var剩余=arraysOfObject.length%10;
var groupsoftware=(arraysOfObject.length-leftOver)/10;
对于(变量i=0;i0){
阵列2.推送([]);
对于(var i=groupsoftend*10;i
您可以创建一个函数来处理将对象添加到两个不同的数据结构中的问题,并使用该函数添加前50个对象:

函数addObject(arr1、arr2、obj){
如果(arr1.length%10==0)arr2.push([]);
arr1.推力(obj);
arr2[arr2.length-1]。推送(obj.IDNumber);
}
变量arr1=[],arr2=[];
对于(变量i=0;i<51;i++){
addObject(arr1,arr2,{“IDNumber”:i+1000});//一些伪ID值
}
控制台日志(arr2)

.as console wrapper{max height:100%!important;top:0;}
您可以创建一个函数来处理向两个不同的数据结构添加对象的问题,并使用该函数来添加前50个对象:

函数addObject(arr1、arr2、obj){
如果(arr1.length%10==0)arr2.push([]);
arr1.推力(obj);
arr2[arr2.length-1]。推送(obj.IDNumber);
}
变量arr1=[],arr2=[];
对于(变量i=0;i<51;i++){
addObject(arr1,arr2,{“IDNumber”:i+1000});//一些伪ID值
}
控制台日志(arr2)

。作为控制台包装{max height:100%!important;top:0;}
您不需要做任何特殊的事情
arr2[0]
是对
var1
引用的同一数组的引用,而不是该数组的副本。如果修改数组,您将在两个位置看到它。因此,如果执行
var1.push(something)
,您将在
arr2[0]
的末尾看到它。您不需要执行任何特殊操作
arr2[0]
是对
var1
引用的同一数组的引用,而不是该数组的副本。如果您修改数组,您将在两个位置都看到它。因此,如果您执行
var1.push(something)
,您将在
arr2[0]
的末尾看到它。非常感谢您的帮助。所以
array2
array1
中的所有数组,它们可以分为10组,我可以通过其[element]编号访问每组。但是如果我添加更多的对象,我将不得不手动调用这些组。我如何在1个数组中对这些数组的所有组进行故事化,这样我就不必这样做,并且它将是自动的?嗨。我已将所有内容包装在一个函数中,以便在添加新对象时调用它来重新组合第一个数组。因此,基本上,每次添加新对象时都必须重新组合。如果你不想这样做,看看另一个答案,但是要注意这个答案的副作用。永远争取函数的纯净度非常有帮助,谢谢。所以
array2
array1
中的所有数组,它们可以分为10组,我可以通过其[element]编号访问每组。但如果我加上更多的obj