当前位置 博文首页 > jcLee95的博客:[小笔记]TypeScript/JavaScript映射两组数据

    jcLee95的博客:[小笔记]TypeScript/JavaScript映射两组数据

    作者:[db:作者] 时间:2021-09-18 15:47

    [小笔记]TypeScript/JavaScript映射两组数据

    李俊才/CSDN博客

    CSDN用户名:jcLee95

    邮箱:291148484@163.com

    【需求】在Python3中有一个函数是zip()函数,它接收两个序列(如列表\元组等)作为参数,将两者中的元素进行一一绑定形成成组,构成一个有两个元素按照一定结构组织的可迭代对象,(Python2就是数组),这个新的可迭代对象可以转换为字典(dict)。在这里,我们将TypeScript/JavaScript中的对象模仿Python中的字典,数组模仿Python中的列表实现zip()函数。

    JavaScript

    var zip = function (key_array, value_array) {
        var res = {};
        for (var i = 0; i < key_array.length; i++) {
            var k = key_array[i];
            var obj = {};
            obj[k] = value_array[i];
            res = Object.assign(res, obj);
        }
        return res;
    };
    

    TypeScript

    export const zip = function(key_array: string | number[], value_array: any[]) {
      let res = {};
      for (let i = 0; i < key_array.length; i++) {
        let k = key_array[i];
        let obj = {};
        obj[k] = value_array[i];
        res = Object.assign(res, obj);
      }
      return res;
    }
    

    用例

    let a = [1,3,4,2];
    let b = ['a','b','c','d'];
    
    console.log(zip(a,b));
    

    Out[]:

    { '1': 'a', '2': 'd', '3': 'b', '4': 'c' }
    

    应用: 以一个数值数组的元素大小顺序对另一个数组排序
    JavaScript

    var bSortBya = function (a, b) {
        var obj = exports.zip(a, b);
        var c = a.sort();
        var res = [];
        for (var i = 0; i < a.length; i++) {
            res.push(obj[c[i]]);
        }
        return res;
    };
    

    TypeScript

    export const bSortBya = function(a: number[],b: any[]){
      let obj = zip(a,b);
      let c=a.sort();
      let res=[];
      for(let i=0; i<a.length; i++){
        res.push(obj[c[i]]);
      }
      return res
    }
    

    用例

    let a = [1,3,4,2];
    let b = ['a','b','c','d'];
    
    console.log(bSortBya(a,b));
    

    Out[]:

    [ 'a', 'd', 'b', 'c' ]
    
    cs