[小笔记]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' ]
目录
相关文章
|
6天前
|
前端开发 JavaScript 程序员
Javascript:forEach、map、filter、reduce、reduceRight
Javascript:forEach、map、filter、reduce、reduceRight
|
7天前
|
存储 缓存 JavaScript
JavaScript中的Set和Map:理解与使用
JavaScript中的Set和Map:理解与使用
|
7天前
|
JavaScript 前端开发
JavaScript中的map和foreach:理解与使用
JavaScript中的map和foreach:理解与使用
|
8天前
|
JavaScript 前端开发 IDE
使用TypeScript进行现代JavaScript开发
【5月更文挑战第15天】TypeScript是JavaScript的超集,提供静态类型检查、接口、类和更好的工具支持,提升代码质量和开发效率。它的关键特性包括类型注解、接口和泛型。在使用时,建议逐步引入到现有项目,充分利用IDE,编写清晰的类型定义,并使用linting工具。TypeScript是现代JavaScript开发的有力工具,尤其适合大型项目。
|
8天前
|
前端开发 JavaScript TensorFlow
如何将训练好的Python模型给JavaScript使用?
本文介绍了如何将TensorFlow模型转换为Web格式以实现浏览器中的实际应用。首先,简述了已有一个能够检测扑克牌的TensorFlow模型,目标是将其部署到Web上。接着,讲解了TensorFlow.js Converter的作用,它能将Python API创建的GraphDef模型转化为TensorFlow.js可读取的json格式,用于浏览器中的推理计算。然后,详细说明了Converter的安装、用法及不同输入输出格式,并提供了转换命令示例。最后,文中提到了模型转换后的实践步骤,包括找到导出的模型、执行转换命令以及在浏览器端部署模型的流程。
19 3
|
8天前
|
JavaScript 前端开发
JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式
【5月更文挑战第11天】JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式。map() 用于创建新数组,其中元素是原数组元素经过指定函数转换后的结果;filter() 则筛选出通过特定条件的元素生成新数组;reduce() 将数组元素累计为单一值。这三个方法使代码更简洁易读,例如:map() 可用于数组元素乘以 2,filter() 用于选取偶数,reduce() 计算数组元素之和。
14 2
|
8天前
|
存储 数据处理 Python
python 之map、zip和filter迭代器示例详解
python 之map、zip和filter迭代器示例详解
13 0
|
8天前
|
JavaScript 安全 前端开发
js的map函数
js的map函数
7 0
|
8天前
|
机器学习/深度学习 人工智能 JavaScript
【JavaScript 与 TypeScript 技术专栏】JavaScript 与 TypeScript 的未来发展趋势
【4月更文挑战第30天】本文探讨了JavaScript和TypeScript的未来发展趋势。JavaScript将聚焦性能优化、跨平台开发、人工智能和WebAssembly的整合。TypeScript则将深化与其他框架的结合,强化类型检查,适应前端工程化,并与WebAssembly融合。两者在Vue 3.0及Web开发中的结合将更加紧密,TypeScript有望在更多领域扩展应用。随着技术进步,JavaScript和TypeScript的结合将成为Web开发的主流趋势。
|
8天前
|
JavaScript 前端开发 安全
【JavaScript与TypeScript技术专栏】TypeScript如何帮助JavaScript开发者避免常见错误
【4月更文挑战第30天】TypeScript,JavaScript的超集,通过静态类型检查和面向对象特性,帮助开发者避免类型错误、引用错误和逻辑错误,提升代码质量和可维护性。它引入类型注解、接口、可选链和空值合并,使代码更清晰、安全。对于大型项目,TypeScript的接口、类和泛型有助于代码结构化和模块化。学习TypeScript能提高JavaScript开发效率。