我不能在尊重ESlint在javascript中的6项标准的同时,建立一个计数我的事件的algo。我的输入表是:
[
{
"id": 2,
"name": "Health",
"color": "0190fe"
},
{
"id": 3,
"name": "Agriculture",
"color": "0190fe"
},
{
"id": 1,
"name": "Urban planning",
"color": "0190fe"
},
{
"id": 1,
"name": "Urban planning",
"color": "0190fe"
}
]我想要:
{“城市规划”:2,“卫生”:1,.}
但这不适用于ESLINT / REACT编译.
这是我的密码:
const jsonToIterate = *'MyPreviousInputJson'*
const names = []
jsonToIterate.map(item => (names.push(item.name)))
const count = []
names.forEach(item => {
if (count[item]){
count.push({text: item, value: 1})
} else {
count.forEach(function(top){top.text === item ? top.value =+ 1 : null})
}
})非常感谢
发布于 2019-10-21 20:01:28
最后,您需要一个对象,而不是数组,所以count应该是{}。如果您实际上没有从电话中返回任何内容,我也不会使用map。您可以为此使用reduce:
let counts = topicsSort.reduce((p, c, i, a) => {
if (!p.hasOwnProperty(c.name)) p[c.name] = 0;
p[c.name]++;
return p;
}, {});发布于 2019-10-21 20:21:31
我半个人要关闭这个复制,因为你所要求的只是一个频率计数器。但无论如何,这里有一个答案:
const jsonToIterate = *'MyPreviousInputJson'*;
const names = {};
jsonToIterate.map(obj => {
if(obj.name in names){
names[obj.name]++
}
else{
names[obj.name] = 1;
}
})https://stackoverflow.com/questions/58493297
复制相似问题