我想让程序减少数组中字符串的出现次数。
我应该只使用reduces。
这是我的程序。
function countWords(inputWords) {
let obj={};
inputWords.reduce((curr,next )=> {
obj[curr]=0;
inputWords.reduce((current,next2)=> {
if(curr===current) {
obj[curr]++;
}
return next2
});
return next;
})
return obj
}
我的结果显示
我的结果:{锻炼:1,非:1,刺激:1,科莫多:3,天鹅绒: 2,官员:1,秘书:4,劳动:2,est:2,aliquip:1, excepteur:1,结果:1,梦娜:1,id:1,eiusmod:1,veniam:1, 动画:1,乌拉姆科:1,埃利特:2,空值:1,杯数据:2,偶然:1, lorem:1,广告:1,quis:1,dolore:1,occaecat:1,aliqua:1,tempor: 1,做:1,做工:1,工作:1}
期望的是:
预期结果:{锻炼:1,非:1,刺激性:1,科莫多:3, 天鹅绒:2,公职:1,公职:4,劳力士:2,est:2,aliquip:1, excepteur:1,结果:1,梦娜:1,id:1,eiusmod:1,veniam:1, 动画:1,乌拉姆科:1,埃利特:2,空值:1,杯数据:2,偶然:1, lorem:1,广告:1,quis:1,dolore:1,occaecat:1,aliqua:1,tempor: 1,做:1,做工:1,工作:1, amet:1}
以下是输入单词:
输入:['exercitation','non','irure','commodo','velit','officia', 'consectetur','commodo','laboris','est','aliquip','excepteur', 'consequat','consectetur','magna','id','eiusmod','veniam', 'anim','consectetur','ullamco','elit','nulla','cupidatat', 'proident','commodo','laboris','est','lorem','consectetur', 'elit','ad','quis','dolore','occaecat','aliqua','cupidatat', 'tempor','do','dolor','velit','labore','amet']
答案 0 :(得分:1)
可能不需要在另一个reduce方法中使用reduce。 在对象中检查密钥是否存在,如果不存在,则在对象中创建密钥,否则将其值更新1
...
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"flow": "flow"
},
...
答案 1 :(得分:1)
您应始终返回减速器内包含频率的对象。初始对象可以是Array.reduce
的第二个参数。
因此,这是为您准备的单程纸:
(() => {
const input = ['exercitation', 'non', 'irure', 'commodo', 'velit', 'officia',
'consectetur', 'commodo', 'laboris', 'est', 'aliquip', 'excepteur', 'consequat',
'consectetur', 'magna', 'id', 'eiusmod', 'veniam', 'anim', 'consectetur',
'ullamco', 'elit', 'nulla', 'cupidatat', 'proident', 'commodo', 'laboris', 'est',
'lorem', 'consectetur', 'elit', 'ad', 'quis', 'dolore', 'occaecat', 'aliqua',
'cupidatat', 'tempor', 'do', 'dolor', 'velit', 'labore', 'amet'];
console.log(input.reduce( (f, v) => v in f ? (f[v] += 1, f) : (f[v] = 1, f), {}));
/* which can also be written as:
input.reduce( (frequencies, value) => {
if (frequencies[value]) {
// frequencies contains the value key, so increment
frequencies[value] += 1;
} else {
// add value to frequencies and initialize ([value] = 1)
frequencies[value] = 1;
}
// return the now updated frequencies object for further use
return frequencies;
}, {});
// ^ the initial frequencies object
*/
})();