Javascript 如何基于子阵列元素状态拆分阵列?

Javascript 如何基于子阵列元素状态拆分阵列?,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个由子数组组成的数组: myArray = [[info1, info2, info3, value1], [info1, info2, info3, value1], [info1, info2, info3, value1],.............] 我想根据“value1”将数组拆分为几个数组。如果在超过5个连续元素中value1大于1000,我想创建一个新数组: mySubArray1 = [[info1, info2, info3, 1011], [info1, inf

我有一个由子数组组成的数组:

myArray  = [[info1, info2, info3, value1], [info1, info2, info3, value1], 
[info1, info2, info3, value1],.............]
我想根据“value1”将数组拆分为几个数组。如果在超过5个连续元素中value1大于1000,我想创建一个新数组:

mySubArray1 = [[info1, info2, info3, 1011], [info1, info2, info3, 
1012], [info1, info2, info3, 1011],.............]
因此,如果我在5个以上的连续元素中发现第二系列元素,其中value1大于1000,我想创建另一个数组:

mySubArray2 = [[info1, info2, info3, 3030], [info1, info2, info3, 
4000], [info1, info2, info3, 1700],.............]
我所做的工作如下:

var j;
for (j = 0; j < array.length; j++) {
if (array[j][3] < 1000 ) {

    console.log("below 1000");
}
else {
    console.log("above 1000");
}

}
var;
对于(j=0;j

这会检测值高于1000的位置,但现在我需要将其排序到新数组中,我不知道如何启动该过程。

您应该能够执行数组。减少以获得所需的结果:

我正在生成一个数组,它应该像您的输入一样,“value1”的值将在995和1010之间

函数getRandomInt(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 让myArray=[…数组(100).keys()].map(n=>['info1','info2','info3',getRandomInt(9951010)]; log(“输入:”,JSON.stringify(myArray)); 设子阵=[]; //结果将包含新子阵列的列表。 让结果=myArray.reduce((acc、val、index)=>{ 如果(val[3]>=1000{ 子阵推送(val); } if((val[3]<1000)| |(index==myArray.length-1)/*在myArray的末尾处理此情况*){ 如果(subArray.length>5){ acc.push(子阵列); } 子阵列=[]; } 返回acc; }, []) console.log(“结果:”);
result.forEach((subArray,n)=>console.log(`subArray${n+1}:`,subArray))您应该能够执行Array.reduce以获得所需的结果:

我正在生成一个数组,它应该像您的输入一样,“value1”的值将在995和1010之间

函数getRandomInt(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 让myArray=[…数组(100).keys()].map(n=>['info1','info2','info3',getRandomInt(9951010)]; log(“输入:”,JSON.stringify(myArray)); 设子阵=[]; //结果将包含新子阵列的列表。 让结果=myArray.reduce((acc、val、index)=>{ 如果(val[3]>=1000{ 子阵推送(val); } if((val[3]<1000)| |(index==myArray.length-1)/*在myArray的末尾处理此情况*){ 如果(subArray.length>5){ acc.push(子阵列); } 子阵列=[]; } 返回acc; }, []) console.log(“结果:”);
result.forEach((subArray,n)=>console.log(`subArray${n+1}:`,subArray))什么是
info1、info2、info3等?这些都是独立变量吗?(如果您想使用字符串,字符串需要分隔符)您还应该发布您尝试过的无法工作的代码什么是
info1、info2、info3
等等?这些都是独立变量吗?(如果您想使用字符串,字符串需要分隔符)您还应该发布您尝试过的代码,但该代码无法工作在银行中。我部分地理解这一点,部分地起作用。但是现在,如果consequetiuve系列的长度大于5,那么不管子阵列是什么,它都会破坏阵列。长度=5?所以如果它是一个8的系列,它实际上会创建一个5。。。(在本例中,我的目标是在同一子数组中获得所有8个)我想这样的方法可能可以解决这个问题:if(subArray.length>5&&val[3]我已经用新的逻辑更新了答案,它应该创建5+项的子数组。再次感谢!比5更长的系列现在附加到子数组中。它可能仍然有一个问题:如果最后一个值应该进入子数组,那么最后一个子数组将被忽略,因为:(index==myArray.length-1)……(我想)。谢谢。我部分理解这一点,也部分起作用。但现在,如果consequetiuve系列的长度大于5,则无论子阵列的长度如何,它都会破坏阵列。长度=5?因此,如果它是一个8的系列,它将实际创建一个5的子阵列…(在本例中,我的目标是在同一子阵列中获得所有8个)我想也许这样的事情可以解决这个问题:if(subArray.length>5&&val[3]我已经用新的逻辑更新了答案,它应该创建5+项的子数组。再次感谢!比5更长的系列现在附加到子数组中。它可能仍然有一个问题:如果最后一个值应该进入子数组,那么最后一个子数组将被忽略,因为:(index==myArray.length-1)…(我认为)。