Javascript-使用ESLINT 6获取json数组的出现
我不能在遵守ESlint的6个javascript标准的同时设置一个计算我的事件的算法。 我的输入表是:Javascript-使用ESLINT 6获取json数组的出现,javascript,reactjs,eslint,Javascript,Reactjs,Eslint,我不能在遵守ESlint的6个javascript标准的同时设置一个计算我的事件的算法。 我的输入表是: [ { "id": 2, "name": "Health", "color": "0190fe" }, { "id": 3, "name": "Agriculture", "color": "0190fe" }, { "id": 1, "name": "Urban planning", "color"
[
{
"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})
}
})
非常感谢好吧,你最后想要的是一个对象,而不是数组,所以
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;
}, {});
我希望有人能把它当作复制品来关闭,因为你所要求的只是一个频率计数器。但无论如何,这里有一个答案:
const jsonToIterate = *'MyPreviousInputJson'*;
const names = {};
jsonToIterate.map(obj => {
if(obj.name in names){
names[obj.name]++
}
else{
names[obj.name] = 1;
}
})
不适用于此输入:(:const topicsort=[{“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”}]@julian-我得到了
{Health:1,Agriculture:1,Urban planning:2}
对于输出-这不对吗?是的,这是我想要的退出:)最好使用forEach
而不是map
在这里,因为您没有使用它返回的数组。另外,名称
应该初始化为对象。如果要在
中使用,则创建(null)
,因为从对象继承的对象。prototype
已经有属性,如果输入与属性冲突(如“toString”
,“valueOf”
,“\uuuuuuuu protou\uuuuuuo”)就会中断当我写这个答案的时候,我想了一会儿forEach和map的比较,我就是想不起来。我的拇指角色是,当有疑问时,映射。但我想你是对的。但是你对初始化对象的看法绝对正确。