如何遍历数组中的对象以计数VueJS中的元素?

时间:2019-07-08 08:51:34

标签: arrays vue.js

我有一个数组,其中包含一个对象,其中包含4个元素:

Task 3: [
   {
    "action_3": 1, 
    "action_4": 1, 
    "action_5": 0, 
    "action_6": 0 
   } 
]

我已经做到了这一点:

this.Task3 = this.actions.map(item => {
          return {
            action_3: item.action_3,
            action_4: item.action_4,
            action_5: item.action_5,
            action_6: item.action_6
          }
        })

对于下一部分,我想检查是否存在多个1-结果应该为2。

到目前为止,这是我的代码:

task3Progress() {
      for (const key of this.Task3) {
        const task3length = Object.keys(key).length

        //should print 2 to console
        console.log(Object.values(key).reduce(
        (count, value) => count + (compare === value ? 1 : 0),
        0) 
    );

       //prints 4 to screen
       return task3length 
      }
    },

我想做两件事:

1)返回4的计数,表示存在的元素数
2)检查有多少1退出,并返回2

我该怎么做?

3 个答案:

答案 0 :(得分:1)

尝试这样,希望您能达到目标。

(define (gen-list low high)
  ((λ (gla)
     (gla gla high '()))
   (λ (cont i result)
     (if (< i low)
         result
         (cont cont (- i 1) (cons i result))))))

以下我也附上了代码段。您可以检查结果。

task3Progress() {
      for (var i=0;i<Task3.length;i++){
       // will print 4 in console
       console.log(Object.keys(Task3[i]).length);
       let values= Object.values(Task3[i]);
       var equaToOne = values.filter(function (item) {
          return item == 1;
       })
      // will print 2 in console
        console.log(equaToOne.length); 
        return equaToOne.length;
      }
 }

答案 1 :(得分:0)

检查一下。

var task_3 = [
   {
    "action_3": 1, 
    "action_4": 1, 
    "action_5": 0, 
    "action_6": 0 
   } 
] ;
var key_count = 0 ;
var one_count = 0 ;

var print_keys = function() {
  for(action in task_3[0]){
    key_count++
    if(task_3[0][action] == 1){
    one_count++
    }
  }
  console.log('key_count = ',key_count, '& one_count=', one_count)
}
<button onclick="print_keys()">print</button>

答案 2 :(得分:0)

这实际上与vuejs没有任何关系。这只是基本的javascript:

const actions = [{
    "action_3": 1,
    "action_4": 1,
    "action_5": 0,
    "action_6": 0
}];

function countActions() {
    return Object.keys(actions[0]).length;
}

function countOccurences(compare) {
    return Object.values(actions[0]).reduce(
        (count, value) => count + (compare === value ? 1 : 0),
        0
    );
}

然后调用countActions()countOccurences(1)