在javascript中,如何按值将数组拆分为具有设置大小的块?

在javascript中,如何按值将数组拆分为具有设置大小的块?,javascript,arrays,Javascript,Arrays,我一直在想办法解决这个问题,但我一点运气都没有。我尝试过各种方法,其中一种是forEacharray方法,但我无法获得所需的输出 想法是,餐费:2.99美元——必须是一份三明治、一份饮料和一份快餐的组合 如果数组中的每个项目只有1个,那么它可以工作,但是当数组中的每个项目超过1个时,我无法让它工作 我有以下数组,但可能会有所不同: [ {“猫”:“冷饮”,“数量”:1,“价格”:1.2}, {“猫”:“冷饮”,“数量”:1,“价格”:1.5}, {“猫”:“快速咬”,“数量”:1,“价格”:2.

我一直在想办法解决这个问题,但我一点运气都没有。我尝试过各种方法,其中一种是
forEach
array方法,但我无法获得所需的输出

想法是,餐费:2.99美元——必须是一份三明治、一份饮料和一份快餐的组合

如果数组中的每个项目只有1个,那么它可以工作,但是当数组中的每个项目超过1个时,我无法让它工作

我有以下数组,但可能会有所不同:

[
{“猫”:“冷饮”,“数量”:1,“价格”:1.2},
{“猫”:“冷饮”,“数量”:1,“价格”:1.5},
{“猫”:“快速咬”,“数量”:1,“价格”:2.5},
{“猫”:“快速咬”,“数量”:1,“价格”:3.5},
{“猫”:“三明治”,“数量”:1,“价格”:5.3}
]
我需要将其分为以下几个部分:

餐饮交易
[
{“猫”:“冷饮”,“数量”:1,“价格”:1.2},
{“猫”:“快速咬”,“数量”:1,“价格”:2.5},
{“猫”:“三明治”,“数量”:1,“价格”:5.3}
]
不在餐饮交易中(如果添加三明治,则成为餐饮交易)
[
{“猫”:“冷饮”,“数量”:1,“价格”:1.5},
{“猫”:“快速咬”,“数量”:1,“价格”:3.5}
]
对不起,如果解释不太好的话

其思想是,每个块必须具有所有3个元素,并具有以下值。 1杯冷饮 1份三明治 1次快速咬合

我所尝试的:

var ITM ="";
var PER_CATEGORY_SET = [];
var value = [
      { "CAT": "COLD DRINKS", "QTY": 1, "PRICE": 1.2 },
      { "CAT": "COLD DRINKS", "QTY": 1, "PRICE": 1.5 },
      { "CAT": "QUICK BITES", "QTY": 1, "PRICE": 2.5 },
      { "CAT": "QUICK BITES", "QTY": 1, "PRICE": 3.5 },
      { "CAT": "SANDWICHES", "QTY": 1, "PRICE": 5.3 },
      { "CAT": "SANDWICHES", "QTY": 1, "PRICE": 7.5 }
    ]

value.forEach(function (my_item){
var xx = value.length;

while (xx > 0) {
   if(ITM !=  my_item.CAT ){
   ITM = my_item.CAT;PER_CATEGORY_SET.push({'CAT':my_item.CAT,'QTY':my_item.QTY,'PRICE':my_item.PRICE});
   value.splice(0, 1);
 }
   xx--;
  }
});
我得到的输出如下,只创建初始数组比什么都不做更有效:

 [
      { "CAT": "COLD DRINKS", "QTY": 1, "PRICE": 1.2 },
      { "CAT": "QUICK BITES", "QTY": 1, "PRICE": 2.5 },
      { "CAT": "SANDWICHES", "QTY": 1, "PRICE": 5.3 }
 ]
我希望它能帮助你

让arr=[
{“猫”:“冷饮”,“数量”:1,“价格”:1.2},
{“猫”:“冷饮”,“数量”:1,“价格”:1.5},
{“猫”:“快速咬”,“数量”:1,“价格”:2.5},
{“猫”:“快速咬”,“数量”:1,“价格”:3.5},
{“猫”:“三明治”,“数量”:1,“价格”:5.3},
{“猫”:“三明治”,“数量”:1,“价格”:7.5}
]
设arr1=[],arr2=[]
for(设i=0;ilog(arr1,arr2)
创建2个新数组,并在原始数组中循环一次。如果我是偶数,则推入第一个数组,否则推入第二个数组

const originalArray =  [
    {"CAT": "COLD DRINKS", "QTY": 1, "PRICE": 1.2}, 
    {"CAT": "COLD DRINKS", "QTY": 1, "PRICE": 1.5},
    {"CAT": "QUICK BITES", "QTY": 1, "PRICE": 2.5},
    {"CAT": "QUICK BITES", "QTY": 1, "PRICE": 3.5},
    {"CAT": "SANDWICHES", "QTY": 1, "PRICE": 5.3},
    {"CAT": "SANDWICHES", "QTY": 1, "PRICE": 7.5}
    ]

 var firstChunk = [];
 var secondChunk = [];

 for(var i = 0; i<originalArray.length; i++){
     if(i%2 === 0){
         firstChunk.push(originalArray[i]);
     }
     else{
         secondChunk.push(originalArray[i]);
     }
 }
const originalArray=[
{“猫”:“冷饮”,“数量”:1,“价格”:1.2},
{“猫”:“冷饮”,“数量”:1,“价格”:1.5},
{“猫”:“快速咬”,“数量”:1,“价格”:2.5},
{“猫”:“快速咬”,“数量”:1,“价格”:3.5},
{“猫”:“三明治”,“数量”:1,“价格”:5.3},
{“猫”:“三明治”,“数量”:1,“价格”:7.5}
]
var firstChunk=[];
var secondChunk=[];

对于(var i=0;iLodash已经有了一个
chunk
函数,它就是为这个函数编写的:

谢谢,不管初始数组大小,这个方法都能工作吗?@MrV是的。如果它对您有帮助,请将它标记为答案。我刚刚尝试过,例如,它对定义的数组非常有效,但当您有更多元素时,它就可以工作了。)fails@MrV你确定吗?你能吗你说有什么问题吗?例如,我有一个包含4个冷饮、4个三明治和4个快速位的数组,我需要动态创建4个块。每个块应该包含1个冷饮、1个三明治和1个快速位。我不确定我是否能够正确解释它。@Dexygen抱歉,我刚刚添加了它。当它是一个简单的数组时,它可以工作,但当它的项目不正确时,它可以nt工作。我正在尝试实现如何创建餐饮交易数组块-我重新措辞了这个问题。