嗨,大家好我需要一点帮助才能解决这个问题。
如果这是重复的帖子,请指出我原来的问题。
这里我有一个元素的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}]
答案 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);