Javascript 根据对象的“数量”属性乘以对象

Javascript 根据对象的“数量”属性乘以对象,javascript,node.js,Javascript,Node.js,我是个新手,在这个新世界里挣扎 我有一组对象: [ { "orderid": "12696", "id": 5180, "name": "Crema Chantilly 250 Ml", "price": 377.2, **"quantity": 1,** "order": 0,

我是个新手,在这个新世界里挣扎

我有一组对象:

[
  {
    "orderid": "12696",
    "id": 5180,
    "name": "Crema Chantilly 250 Ml",
    "price": 377.2,
    **"quantity": 1,**
    "order": 0,
    "category": 167
  },
  {
    "orderid": "12696",
    "id": 3929,
    "name": "Close Up",
    "price": 111.15,
    **"quantity": 2,**
    "order": 1,
    "category": 156
  },
  {
    "orderid": "12696",
    "id": 2739,
    "name": "Hellmanns 232 Ml",
    "price": 92.68,
    **"quantity": 2,**
    "order": 31,
    "category": 131
  }
]
这些产品卡将通过条形码扫描仪进行扫描,用于仓库分拣应用程序。我把它作为一种多步骤的形式来做。我需要将对象乘以它的数量,这样我就可以拾取每个项目。 我使用sequelize从数据库中获取所有内容,然后使用.map()从产品卡中创建一个新的对象数组

这是我正在寻找的一个例子:

[
  {
    "orderid": "12696",
    "id": 5180,
    "name": "Crema Chantilly 250 Ml",
    "price": 377.2,
    **"quantity": 1,**
    "order": 0,
    "category": 167
  },
  {
    "orderid": "12696",
    "id": 3929,
    "name": "Close Up",
    "price": 111.15,
    **"quantity": 2,**
    "order": 1,
    "category": 156
  },
  {
    "orderid": "12696",
    "id": 3929,
    "name": "Close Up",
    "price": 111.15,
    **"quantity": 2,**
    "order": 1,
    "category": 156
  },
  {
    "orderid": "12696",
    "id": 2739,
    "name": "Hellmanns 232 Ml",
    "price": 92.68,
    **"quantity": 2,**
    "order": 31,
    "category": 131
  },
  {
    "orderid": "12696",
    "id": 2739,
    "name": "Hellmanns 232 Ml",
    "price": 92.68,
    **"quantity": 2,**
    "order": 31,
    "category": 131
  }
]
我还想在DOM上完成这一切,使用一个数字输入,当我扫描产品的条形码时,输入的数字会减少,但我不知道该怎么做

提前谢谢,我会非常感谢你的帮助

你所说的“把一个物体乘以它的数量”是什么意思?是否希望对象在数组中出现那么多次?如果是,您可以使用reduce:

const项=[
{
“订单ID”:“12696”,
“id”:5180,
“名称”:“Crema Chantilly 250毫升”,
“价格”:377.2,
“数量”:1,
“订单”:0,
“类别”:167
},
{
“订单ID”:“12696”,
“id”:3929,
“名称”:“特写”,
“价格”:111.15,
“数量”:5,
"命令":一,,
“类别”:156
},
]
常量=项目。减少((acc,项目)=>{
返回[
…acc,//以前的项目
…Array.from({length:item.quantity},()=>({…item}))//当前项重复“quantity”次
]
}, []);
原木(扁平)你所说的“将一个物体乘以其数量”是什么意思?是否希望对象在数组中出现那么多次?如果是,您可以使用reduce:

const项=[
{
“订单ID”:“12696”,
“id”:5180,
“名称”:“Crema Chantilly 250毫升”,
“价格”:377.2,
“数量”:1,
“订单”:0,
“类别”:167
},
{
“订单ID”:“12696”,
“id”:3929,
“名称”:“特写”,
“价格”:111.15,
“数量”:5,
"命令":一,,
“类别”:156
},
]
常量=项目。减少((acc,项目)=>{
返回[
…acc,//以前的项目
…Array.from({length:item.quantity},()=>({…item}))//当前项重复“quantity”次
]
}, []);
原木(扁平)使用Array#flatMap和Array.from

const输入=[
{
“订单ID”:“12696”,
“id”:5180,
“名称”:“Crema Chantilly 250毫升”,
“价格”:377.2,
“数量”:1,
“订单”:0,
“类别”:167
},
{
“订单ID”:“12696”,
“id”:3929,
“名称”:“特写”,
“价格”:111.15,
“数量”:2,
"命令":一,,
“类别”:156
},
{
“订单ID”:“12696”,
“id”:2739,
“名称”:“赫尔曼232毫升”,
“价格”:92.68,
“数量”:2,
“命令”:31,
“类别”:131
}
];
const result=input.flatMap(i=>Array.from({length:i.quantity},()=>({…i}));
控制台日志(结果)使用Array#flatMap和Array.from

const输入=[
{
“订单ID”:“12696”,
“id”:5180,
“名称”:“Crema Chantilly 250毫升”,
“价格”:377.2,
“数量”:1,
“订单”:0,
“类别”:167
},
{
“订单ID”:“12696”,
“id”:3929,
“名称”:“特写”,
“价格”:111.15,
“数量”:2,
"命令":一,,
“类别”:156
},
{
“订单ID”:“12696”,
“id”:2739,
“名称”:“赫尔曼232毫升”,
“价格”:92.68,
“数量”:2,
“命令”:31,
“类别”:131
}
];
const result=input.flatMap(i=>Array.from({length:i.quantity},()=>({…i}));

控制台日志(结果)哦,我喜欢雷·哈特菲尔德的答案

我的也是一样,但更冗长,更不优雅

// Prepare somewhere to store the results
const results = [];

// "mini-items" for brevity:
const items = [{id:1, q:1}, {id:2, q:3}, {id:3, q:2}]; 

for (let item of items){
    
    // repeat "quantity" times, and add to results
    for(i=0;i<item.q;i++) {
      // Make a copy of the item
      let copy = { ...item }; 

      // do something with the copy
      copy.someOtherId = Math.random();

      // Set the copy quantity
      copy.q = 1;

      results.push( copy );
    }
}
// all done!
console.log(results);
//准备存储结果的地方
常量结果=[];
//为简洁起见,“迷你项目”:
const items=[{id:1,q:1},{id:2,q:3},{id:3,q:2}];
对于(让项目中的项目){
//重复“数量”次数,并添加到结果中

因为(i=0;i哦,我喜欢雷·哈特菲尔德的答案

我的也是一样,但更冗长,更不优雅

// Prepare somewhere to store the results
const results = [];

// "mini-items" for brevity:
const items = [{id:1, q:1}, {id:2, q:3}, {id:3, q:2}]; 

for (let item of items){
    
    // repeat "quantity" times, and add to results
    for(i=0;i<item.q;i++) {
      // Make a copy of the item
      let copy = { ...item }; 

      // do something with the copy
      copy.someOtherId = Math.random();

      // Set the copy quantity
      copy.q = 1;

      results.push( copy );
    }
}
// all done!
console.log(results);
//准备存储结果的地方
常量结果=[];
//为简洁起见,“迷你项目”:
const items=[{id:1,q:1},{id:2,q:3},{id:3,q:2}];
对于(让项目中的项目){
//重复“数量”次数,并添加到结果中

对于(i=0;i@JaromandaX有人订购了一个产品的12个项目,但是,我不打算复制和粘贴12次,我试图模拟它。id是一个假的条形码,我添加它来模拟一个产品代码,它作为一个验证器将它与用户输入的代码进行比较。看起来你真正需要的是
orderQty的另一个属性。在数组中重复项对于类似IMO的东西来说是一种不寻常的方法。然后,要按顺序填充该项,您需要将所有内容都放在一个数组中object@FacuMartin我看到你已经评论了所有的答案,说他们是你所寻找的,如果他们帮助,你可以考虑把他们作为帮助,接受一个这样的追求。ion在网站上被标记为已解决。请参阅@FluffyKitten哦,很抱歉!我会这样做,谢谢你的提示,我是新来的!没问题。是否投票或接受你得到的任何答案完全取决于你,但对有用的好答案表示感谢总是很好的:)@JaromandaX有人订购了12项产品,但是,我不打算复制和粘贴12次,我只是在尝试模拟。id是一个伪条形码,我添加它来模拟产品代码,它作为一个验证器将其与用户输入的代码进行比较。看起来您真正需要的是
orderQty
的另一个属性。在数组中重复项对于像这样的事情来说是一种不寻常的方法。然后按顺序填充该项,您将所有内容都放在一个数组中object@FacuMartin我看到你已经评论了所有的答案,说他们是你所寻找的,如果他们帮助,你可以考虑将他们作为帮助和接受一个,所以问题是在网站上标记为已解决。请参阅@FluffyKitten oh抱歉