zoukankan      html  css  js  c++  java
  • [Javascript] Implement zip function

    1. Use a for loop to traverse the videos and bookmarks array at the same time. For each video and bookmark pair, create a {videoId, bookmarkId} pair and add it to the videoIdAndBookmarkIdPairs array.

    function() {
        var videos = [
                {
                    "id": 70111470,
                    "title": "Die Hard",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                },
                {
                    "id": 654356453,
                    "title": "Bad Boys",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                },
                {
                    "id": 65432445,
                    "title": "The Chamber",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                },
                {
                    "id": 675465,
                    "title": "Fracture",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                }
            ],
            bookmarks = [
                {id: 470, time: 23432},
                {id: 453, time: 234324},
                {id: 445, time: 987834}
            ],
        counter,
        videoIdAndBookmarkIdPairs = [];
    
        for(counter = 0; counter < Math.min(videos.length, bookmarks.length); counter++) {
            videoIdAndBookmarkIdPairs.push({
              videoId: videos[counter].id,
              bookmarkId: bookmarks[counter].id
            })
        }
    
        return videoIdAndBookmarkIdPairs;
    }
            

    2. Let's add a static zip() function to the Array type. The zip function accepts a combiner function, traverses each array at the same time, and calls the combiner function on the current item on the left-hand-side and right-hand-side. The zip function requires an item from each array in order to call the combiner function, therefore the array returned by zip will only be as large as the smallest input array.

    // JSON.stringify(Array.zip([1,2,3],[4,5,6], function(left, right) { return left + right })) === '[5,7,9]'
    
    Array.zip = function(left, right, combinerFunction) {
        var counter,
            results = [];
    
        for(counter = 0; counter < Math.min(left.length, right.length); counter++) {
            // Add code here to apply the combinerFunction to the left and right-hand items in the respective arrays
            results.push(combinerFunction(left[counter], right[counter]))
      }
    
        return results;
    };

    3. Let's repeat exercise 1, but this time lets use your new zip() function. For each video and bookmark pair, create a {videoId, bookmarkId} pair.

    function() {
        var videos = [
                {
                    "id": 70111470,
                    "title": "Die Hard",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                },
                {
                    "id": 654356453,
                    "title": "Bad Boys",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                },
                {
                    "id": 65432445,
                    "title": "The Chamber",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                },
                {
                    "id": 675465,
                    "title": "Fracture",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                }
            ],
            bookmarks = [
                {id: 470, time: 23432},
                {id: 453, time: 234324},
                {id: 445, time: 987834}
            ];
    
        return Array.
            zip(
          videos,
          bookmarks,
          (video,bookmark ) => ({videoId: video.id, bookmarkId: bookmark.id}))
              
    }
  • 相关阅读:
    python__基础数据类型
    python基础之迭代器生成装饰器
    cat命令查看文件显示行号
    VM虚拟机安装ESD版Win10
    CentOS 8修改系统语言为中文且立即生效
    CentOS 8下yum安装LAMP环境
    完美解决CentOS8 yum安装AppStream报错,更新yum后无法makecache的问题
    鬼灭之刃高清电脑桌面壁纸
    记CentOS 8 yum 报AppStream Error排错
    CentOS 8 重启网卡命令
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5620587.html
Copyright © 2011-2022 走看看