[英]How would I change this code to a different format? (Javascript)
The code below is the code that I have written:下面的代码是我写的代码:
function singer(artist) {
var songs = [];
for(var i = 0; i < music.length;i++ ){
if(music[i].artist.indexOf(artist) > -1) {
songs.push(music[i].name);
}
}
return songs;
}
The code that I want to look similar to the function singer(artist) code is this:我希望看起来类似于 function 歌手(艺术家)代码的代码是这样的:
const genreCount = () => {
const genres = music.reduce((result, cur) => {
cur.genres.forEach(g => {
if (result.hasOwnProperty(g)) {
result[g] += 1;
}
else
result[g] = 1;
});
return result;
}, {});
return genres;
}
I am unfamiliar with this type of format in Javascript, how would I change it so that const genreCount will look like function singer(artist).我不熟悉 Javascript 中的这种格式,我将如何更改它以使 constgenreCount 看起来像 function 歌手(艺术家)。
this style is called functional programming这种风格称为函数式编程
const singer = artist => music.filter(m => artist.indexOf(m.artist) > -1).map(m => m.name)
here is a good interactive tutorial if you are interested Functional Programming in Javascript如果您对Javascript 中的函数式编程感兴趣,这里是一个很好的交互式教程
UPDATE: oops, sorry for misunderstanding your questions here is genreCount rewritten with for-loop:更新:哎呀,很抱歉在这里误解了您的问题是用for循环重写的genreCount:
function genreCount(){
const genres = {};
for(var i=0; i<music.length; i++){
var g = music[i]
if (genres.hasOwnProperty(g)) {
genres[g] += 1;
}
else{
genres[g] = 1;
}
}
return genres;
}
This is what you will get if you want to change that function:如果您想更改 function,这就是您将得到的:
function genreCount() {
const genres = music.reduce(function(result, cur) {
cur.genres.forEach(function(g) {
if (result.hasOwnProperty(g)) {
result[g] += 1;
}
else
result[g] = 1;
});
return result;
}, {});
return genres;
}
or (if you want to assign that fucntion to a const
anyway):或(如果您想将该功能分配给
const
无论如何):
const genreCount = function() {
const genres = music.reduce(function(result, cur) {
cur.genres.forEach(function(g) {
if (result.hasOwnProperty(g)) {
result[g] += 1;
}
else
result[g] = 1;
});
return result;
}, {});
return genres;
}
You just should replace arrow functins
with the regular function expressions
.您只需将
arrow functins
替换为regular function expressions
。 But I don't know why do you need that.但我不知道你为什么需要那个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.