javascript - 怎么遍历输出一个带有内嵌数组的集合中的某些值?
巴扎黑
巴扎黑 2017-04-11 12:06:15
[JavaScript讨论组]

最近在研究react,遇到一个问题,我在mongo中储存了一组数据,数据格式是这样
{
_id: 1,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]

}
{
_id: 2,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]

}
{
_id: 3,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]

}
现在我想把每一个name的amount累加输出为一个新的数组,比如把name为”哇哈哈“的商品都累加输出到一个新的数组中,在新的数组中的第一项应该为30,但是现在始终找不到合适的方法做到,用map来遍历输出console的的结果数组中的每一项都是undefined,实在是想不通啊,google也没有找到方法解决,诸位有什么好的办法吗?

巴扎黑
巴扎黑

全部回复(4)
PHPz

你这是object,不是array,当然不能用map来遍历。
用for in来做循环吧

黄舟

您的JSON嵌套的可真够深的,可以用如下的代码来遍历:

<script>
var arr=[{
_id: 1,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]
},
{
_id: 2,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]
},
{
_id: 3,
items: [

          { name: "哇哈哈", amount: 10 },
          { name: "脉动", amount: 11 },
          { name: "百事", amount: 15 }
       ]
}];

var whh=0;

for(var i in arr){    
    for(var j in arr[i]){
        for(var z in arr[i][j]){
            if(arr[i][j][z].name=='哇哈哈'){
                whh+=arr[i][j][z].amount;
            }
        }
    }
    
}

console.log(whh);
</script>
大家讲道理

你用react应该是支持es6吧,我这是es6语法;

需要嵌套计算一下:
//假定是b是服务端返回的复杂结构数组
b.map((_,index)=>b.map(i=>i.items[index].amount).reduce((i,j)=>i+j))

PHPz

楼主解决了吗,我也遇到了这个问题,可以分享一下吗?谢谢楼主

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号