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
计算……你能告诉我更多细节吗