[小笔记]TypeScript/JavaScript模拟Python中的zip(不使用map)

简介: [小笔记]TypeScript/JavaScript模拟Python中的zip(不使用map)

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

【需求】在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 declare type PropertyName = string | number;
export const zip = function(keys: PropertyName[], values: any[]) {
  let res = {};
  for (let i = 0; i < keys.length; i++) {
    let k = keys[i];
    let obj:Record<PropertyName,any> = {};
    obj[k] = values[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' ]
目录
相关文章
|
5天前
|
存储 设计模式 算法
|
19天前
|
JSON JavaScript 前端开发
在Python中调用和执行JavaScript
在Python中调用和执行JavaScript主要通过`PyExecJS`库实现。安装库后,可以使用`execjs.compile`编译JS代码并用`eval`或`call`执行。此外,还能加载JavaScript库和框架,调用外部JS文件,处理返回值,以及在两者间传递数据。Python和JavaScript各有优劣,适用于不同场景,结合使用可增强项目功能和灵活性。
27 0
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
5天前
|
存储 索引 Python
|
17天前
|
JavaScript 前端开发
TypeScript极速入门笔记1
TypeScript极速入门笔记1
29 4
|
30天前
|
Python
Python内置函数map、split、join讲解
Python内置函数map、split、join讲解
34 0
|
1月前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
74 0
|
1月前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
34 0
JavaScript高级笔记-coderwhy版本(一)
|
1月前
|
JSON JavaScript 前端开发
Node.JS第二讲笔记
Node.JS第二讲笔记
32 0