Javascript 使用嵌套对象

Javascript 使用嵌套对象,javascript,arrays,reduce,Javascript,Arrays,Reduce,我认为这是一个愚蠢而简单的问题,但我在谷歌和其他资源中找不到任何结果 我有一个像这样的对象数组 const myArr = [ [{ id: 1, price: 200, }, { id: 2, price: 900, }, { id: 3, price: 100, }], [{ id: 5, pric

我认为这是一个愚蠢而简单的问题,但我在谷歌和其他资源中找不到任何结果

我有一个像这样的对象数组

 const myArr = [
     [{
         id: 1,
         price: 200,
     }, {
         id: 2,
         price: 900,
     }, {
         id: 3,
         price: 100,
     }],
     [{
         id: 5,
         price: 100,
     }]
 ];
换句话说,我有一个数组,我的数组包含一些数组,每个内部数组都包含一些对象

 arr [ [ {},{},{} ] ,   [ {} ]    ]
现在我想要两样东西

  • 所有产品的计数
  • 所有产品的总和

  • *(每个对象=一个产品)

    通过展平到单个阵列

    用于获取
    总和

    计数
    是展平数组的长度

    constmyarr=[{“id”:1,“价格”:200},{“id”:2,“价格”:900},{“id”:3,“价格”:100}],{“id”:5,“价格”:100}];
    常数展平=[].concat(…myArr);
    常数计数=展平长度;
    const sum=flatted.reduce((s,o)=>s+o.price,0);
    console.log('count',count);
    
    console.log('sum',sum)
    您可以使用
    concat
    将所有对象包装在一个
    数组中

    应用
    length
    属性以找出数组中对象的数量,然后应用
    reduce
    方法以获得总和

    constmyarr=[{id:1,price:200,},{id:2,price:900,},{id:3,price:100,}],{id:5,price:100,}];
    arr=myArr.reduce((acc,arr)=>acc.concat(arr),[]);
    总和=arr.reduce((会计科目,项目)=>会计科目+项目价格,0);
    console.log('count'+arr.length);
    
    console.log('sum'+sum)
    您可以使用排列来平整阵列:

    var myArr=[
    [
    { 
    id:1,
    价格:200,,
    },
    { 
    id:2,
    价格:900,
    },
    { 
    id:3,
    价格:100,
    }
    ],
    [
    { 
    id:5,
    价格:100,
    }
    ]
    ];
    var arr=[].concat(…myArr);
    console.log('Length:',arr.Length);
    var总和=arr.reduce((m,o)=>m+o.price,0);
    console.log('Sum:',Sum)ES6
    您还可以使用数组的方法来获得所需的结果

    可用于遍历数组,将当前元素值添加到先前元素值之和

    演示

    constmyarr=[{id:1,price:200,},{id:2,price:900,},{id:3,price:100,}],{id:5,price:100,}];
    让结果=myArr.reduce((r,v)=>{
    r、 计数+=v.长度;
    r、 sum+=v.reduce((总计,{price})=>total+price,0);
    返回r;
    },{count:0,sum:0})
    控制台日志(结果)
    
    。作为控制台包装{max height:100%!important;top:0;}
    您能展示一下您尝试过的代码吗?@OriDrori,我们有相同的想法,但您的速度更快。无论如何,竖起大拇指,向上投票。@Oridori我的朋友,现在我有另一个问题,你认为每种产品都有属性{count:n},这意味着每种产品的计数,现在我如何才能得到总价???@Oridori,例如=>[[{id:1,price:100,count:10}],{id:2,price:200,count:5}];我想要这个结果(产品价格)100*(产品计数)10。。。。。。。你真的有答案。看看我代码中的
    sum
    计算……你能告诉我更多细节吗