从Reddit API排序JSON,初级开发者!我该如何重构呢?

时间:2019-02-12 23:40:00

标签: javascript refactoring

只是在寻找一种方法来重构这种庞大的控制流。

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;

只是希望有一种更简单的方法来做到这一点,也许在审美上会更令人愉悦。一直在寻找我可能不知道的新方法或学习重构代码的方法:)

谢谢您,同胞们!

0 个答案:

没有答案