只是在寻找一种方法来重构这种庞大的控制流。
post objs有一个{kind:'t1 || t2 ||| t3'数据:{...}}
我们在这里处理“ t3”,它们将具有我用于在post.data下排序的键。
let images = [];
let gfycat = [];
let redditVideo = [];
let youtube = [];
let gifv = [];
let uncaught = [];
let extensions = ['gifv', 'gif', 'jpg', 'jpeg', 'png'];
let fileExtension;
posts.map(post => {
let caught = false;
if (post.data.domain === 'gfycat.com') {
caught = !caught
gfycat.push(post);
return;
}
if (post.data.domain.includes('imgur')) {
if (post.data.url.includes('gifv')) {
caught = !caught;
gifv.push(post);
return;
} else {
caught = !caught
images.push(post);
return;
}
};
let isImage = false;
fileExtension = post.data.url.lastIndexOf('.');
fileExtension = post.data.url.substr(fileExtension + 1);
extensions.map(ext => {
if (ext === fileExtension && isImage !== true) {
return isImage = true;
}
})
if (isImage === true) {
caught = !caught
images.push(post);
return;
}
if (post.data.post_hint && post.data.post_hint === 'rich:video') {
if (post.data.domain === 'youtube.com' || post.data.domain === 'youtu.be') {
caught = !caught;
youtube.push(post);
return
}
}
if (post.data.post_hint && post.data.post_hint === 'hosted:video') {
caught = !caught
redditVideo.push(post);
return;
} else if (post.data.domain === 'v.redd.it') {
caught = !caught;
redditVideo.push(post);
return;
};
if (caught === false) {
caught = !caught;
uncaught.push(post);
return;
}
})
let media = {
gfycat: gfycat,
redditVideo: redditVideo,
youtube: youtube,
images: images,
gifv: gifv
}
return media;
只是希望有一种更简单的方法来做到这一点,也许在审美上会更令人愉悦。一直在寻找我可能不知道的新方法或学习重构代码的方法:)
谢谢您,同胞们!