如何获取分配给JSON数组中相同键的重复值的计数 - JavaScript / NodeJS

时间:2016-08-09 19:00:17

标签: javascript arrays json node.js

嗨,大家好我需要一点帮助才能解决这个问题。

如果这是重复的帖子,请指出我原来的问题。

这里我有一个元素的JSON数组

例如:var consume = [{"key":"Test1"},{"key":"Test2"},{"key":"Test3"},{"key":"Test1"},{"key":"Test3"},{"key":"Test1"}];

预期OutPut:

var produce = [{"name":"test1","count":3},{"name":"test2","count":2},{"name":"test3","count":2}]

2 个答案:

答案 0 :(得分:3)

最后,我用纯JavaScript编写了我的问题的答案。

感谢您的支持人员,他们曾试图指导我解决我的问题

var consume = [{"key":"Test1"},{"key":"Test2"},{"key":"Test3"},{"key":"Test1"},{"key":"Test3"},{"key":"Test1"}]
 
 var temp = [];
 
 var produce = [];
 
 for(var i=0;i<consume.length;i++){
   if(temp.indexOf(consume[i].key) == -1){
   		temp.push(consume[i].key);
      var _data = {};
      _data.name = consume[i].key;
      _data.count = 1;
      
      produce.push(_data);
   }else{
     for(var j=0;j<produce.length;j++){
     		if(produce[j].name === consume[i].key){
        		var _x = parseInt(produce[j].count) + 1;
            produce[j].count = _x;
        }
     }
   }
 }

console.log(produce);

答案 1 :(得分:0)

嗯......现在谈到对象属性,我对ES6迭代器很感兴趣。这就是我接近这份工作的方式;

var consume = [{"key":"Test1"},{"key":"Test2"},{"key":"Test3"},{"key":"Test1"},{"key":"Test3"},{"key":"Test1"}],
    reduced = consume.reduce((p,c) => (p[c.key] ? p[c.key]++ : p[c.key] = 1,p),{}),
    produce = [];
reduced[Symbol.iterator] = function*(){
                             var oKeys = Object.keys(this);
                             for(var key of oKeys) yield {name : key, count: this[key]};
                           };
produce = [...reduced];
console.log(produce);