[小笔记]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' ]
目录
相关文章
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
1月前
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
1月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
45 0
|
1月前
|
JavaScript 前端开发 IDE
深入理解TypeScript:提升JavaScript开发的利器
【10月更文挑战第8天】 深入理解TypeScript:提升JavaScript开发的利器
28 0
|
12天前
|
自然语言处理 JavaScript 前端开发
[JS]同事看了我做的this笔记,直摇头,坦言:我还是参考启发博文吧
本文介绍了JavaScript中`this`关键字的重要性和使用规则。作者回顾了早期笔记,总结了`this`指向的各种情况,并分享了最新的理解。文章强调了`this`在不同上下文中的指向,包括对象方法、全局函数、箭头函数等,并提供了改变`this`指向的方法。适合JavaScript开发者参考。
28 2
|
16天前
|
Web App开发 JavaScript 前端开发
探索Deno:新一代JavaScript/TypeScript运行时环境
【10月更文挑战第25天】Deno 是一个新兴的 JavaScript/TypeScript 运行时环境,由 Node.js 创始人 Ryan Dahl 发起。本文介绍了 Deno 的核心特性,如安全性、现代化、性能和 TypeScript 支持,以及开发技巧和实用工具。Deno 通过解决 Node.js 的设计问题,提供了更好的开发体验,未来有望进一步集成 WebAssembly,拓展其生态系统。
|
20天前
|
JavaScript 安全 前端开发
探索Deno 1.x:安全JavaScript/TypeScript运行时的新篇章
【10月更文挑战第21天】Deno 1.x 是由Node.js创始人Ryan Dahl发起的项目,旨在解决Node.js的安全和模块化问题。Deno 1.x 版本带来了统一的运行时、默认安全、ES模块支持和内置TypeScript支持等新特性。其安全模型基于最小权限原则、沙箱环境和严格的远程代码执行控制,适用于Web服务器、命令行工具、桌面和移动应用及微服务开发。本文探讨了Deno 1.x的核心特性、安全模型及其在现代Web开发中的应用。
|
26天前
|
JavaScript 安全 前端开发
掌握Deno:新一代安全的JavaScript和TypeScript运行时
【10月更文挑战第15天】Deno是由Node.js创始人Ryan Dahl发起的新一代JavaScript和TypeScript运行时,旨在解决Node.js的设计问题,提供更安全、现代的开发体验。本文介绍Deno的核心特性、优势及使用方法,包括安全性、统一的运行时、现代Web标准和内置工具等,帮助开发者快速上手Deno,适用于Web开发、工具开发和教育等领域。
|
24天前
|
JavaScript 前端开发 安全
探索Deno:现代JavaScript/TypeScript运行时的崛起
【10月更文挑战第17天】Deno是由Node.js创始人Ryan Dahl发起的现代JavaScript/TypeScript运行时,强调安全性、TypeScript原生支持、统一的运行时环境和现代HTTP客户端。本文深入探讨了Deno的特性、优势及其在业界的应用,展示了它如何提升开发效率和代码安全性。
|
25天前
|
JavaScript 前端开发 安全
探索Deno 1.x:新一代JavaScript/TypeScript运行时
【10月更文挑战第16天】Deno 1.x是由Node.js创始人Ryan Dahl发起的新一代JavaScript/TypeScript运行时,自2018年首次亮相以来备受关注。本文介绍了Deno 1.x的新特性,如标准化模块、更严格的安全模型、改进的TypeScript支持和插件系统,探讨了其在现代Web开发中的潜在影响,并提供了如何开始使用Deno进行开发的指南。