首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历分组集合

遍历分组集合
EN

Stack Overflow用户
提问于 2018-10-31 08:02:58
回答 1查看 49关注 0票数 0

我想迭代一遍集合,但我很难做到这一点,因为我是新手。下面我展示我的数据。

代码语言:javascript
复制
 user: Array [1]
       0. Object
           id:8
           products:Object
              3: Array[2]
                 0: Object
                     value: 25
                     id:4
                1: Object
                     value: 20
                     id:5
               4: Array[3]
                   0: Object
                       value: 14
                       id:6
                   1: Object
                      value: 30
                      id:7
                   1: Object
                      value: 20
                      id:8

因此,我想得到价值,以便对每个分组集合进行汇总。集合之和3 =a,集合4=b之和等。

我试了一下,但一无所获:

代码语言:javascript
复制
data:{
                user:[],
         }
methods:{
                watchedOnly(){
                    var self = this;
                    for(var product in self.user.products ){
                            for (var key in product){
                                if(product.hasOwnProperty('key')){
                                    console.log(product[key]);
                                 }
                            }

                    }
                }, }

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-31 09:28:20

首先,如果您的真实数据有这样的结构,请留下注释,然后我编辑这个答案:

代码语言:javascript
复制
let user = [
  {
    id: 8,
    products: {
      3: [
        {id: 4, value: 25},
        {id: 5, value: 20}
      ],
      4: [
        {id: 6, value: 14},
        {id: 7, value: 30},
        {id: 8, value: 20}
      ]
    }
  }
]

function sum (arr) {
  Object
    .entries(arr[0].products)
    .forEach(pair => {
      let sum = Array
        .from(pair[1].map(o => o.value))
        .reduce((a, b) => a + b)
      console.log(`Sum for product ${pair[0]} is ${sum}`)
    })
}

sum(user)

或者在Vue组件中:

代码语言:javascript
复制
export default {
  data () {
    return {
      user: []
    }
  },

  computed: {
    watchedOnly () {
      let result = {}

      Object
        .entries(this.user[0].products)
        .forEach(pair => {
          let sum = Array
            .from(pair[1].map(o => o.value))
            .reduce((a, b) => a + b)
          result[pair[0]] = sum
        })

      return result
    }
  }
}

在模板中使用:

代码语言:javascript
复制
<p v-for="(sum, product) in watchedOnly">
  Sum for product {{ product }} is {{ sum }}
</p>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53078799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档