js两个数求和的函数,算法 两数之和,JS求解两数之和算法详解

js两个数求和的函数,算法 两数之和,JS求解两数之和算法详解

摘要:本文主要介绍了求解两个数和的JS算法,并结合实例详细分析了JS算法求解两个数和的相关原理、实现方法和操作注意事项。有需要的可以参考一下。

目录

题目描述解题图复习本文举例说明了求解两个数之和的JS算法。分享给你,供你参考,如下:

题目描述

给定一个整数数组和一个目标值,找出数组中的两个数和目标值。

可以假设每个输入只对应一个答案,相同的元素不能重用。

*小费

给定nums=[2,7,11,15],target=9

因为nums[0]nums[1]=2 ^ 7=9

所以返回[0,1]。

:

解法

使用映射记录数组元素值和对应的下标,对于nums[i],判断target-nums[i]中是否有映射。

var twoSum=function(nums,target) {

const _ length=nums.length

const _ may Map=new Map();

for(设I=0;i _ lengthi ) {

if(_ maymap . has(target-nums[I]){

return[_ maymap . get(target-nums[I]),I];

}

_mayMap.set(nums[i],I);

}

};

Map回顾

Map对象保存键值对。任何值(对象或原始值)都可以用作键或值。

新地图([可重复])

Iterable可以是数组,也可以是其他iterable对象,其元素是键值对(二元数组,例如:[[ 1,' one' ],[ 2,' two' ]])。每个键值对都被添加到新映射中。Null将被视为未定义。

Objects 和 maps 的比较

与对象映射类似,它们都允许您通过按键来访问值、删除键以及检查键是否绑定到值。

所以(并且没有其他内置的替代方案)在过去,我们一直使用对象作为地图。

但是,地图和对象之间有一些重要的区别,在以下情况下使用地图是更好的选择:

对象的键只能是字符串或符号,而映射的键可以是任何值,包括函数、对象和基本类型。

映射中的键值是有序的,但是添加到对象中的键却不是。因此,当遍历它时,Map对象按照插入的顺序返回键值。

可以通过size属性直接获得一个Map的键值对个数,而一个对象的键值对个数只能手工计算。

Map可以直接迭代,而Object的迭代需要先得到它的key数组,然后再迭代。

每个对象都有自己的原型,原型链上的键名可能与您在对象上设置的键名冲突。

虽然ES5可以从map=Object.create(null)开始创建一个没有原型的对象,但是这种用法并不常见。

在涉及频繁添加和删除键值对的场景中,Map具有一些性能优势。

属性

Map.length

长度属性的值为0。

get Map[@@species]

此构造函数用于创建派生对象。

Map.prototype

表示映射构造函数的原型。允许添加属性以应用于所有地图对象。

所有的 Map 对象实例都会继承 Map.prototype。

Map.prototype.constructor

返回创建实例原型的函数。是默认的映射函数。

Map.prototype.size

返回映射对象的键/值对的数量。

Map.prototype.clear()

移除映射对象的所有键/值对。

Map.prototype.delete(键)

如果该元素存在于Map对象中,则将其移除并返回true;否则,如果元素不存在,则返回false。

Map.prototype.entries()

返回一个新的迭代器对象,该对象包含Map对象中每个元素的[key,value]数组,按插入顺序排列。

Map.prototype.forEach(callbackFn[, thisArg])

按照插入顺序为Map对象中的每个键值对调用callbackFn函数一次。如果为forEach提供了thisArg,它将在每次回调中用作该值。

Map.prototype.get(key)

返回与键对应的值,如果不存在,则返回未定义的值。

Map.prototype.has(key)

返回一个布尔值,该值指示Map实例是否包含与键对应的值。

map . prototype . key()

返回一个新的迭代器对象,该对象按照插入顺序包含Map对象中每个元素的键。

Map.prototype.set(key, value)

设置贴图对象中关键点的值。将返回地图对象。

Map.prototype.values()

返回一个新的迭代器对象,该对象按照插入顺序包含Map对象中每个元素的值。

Map.prototype[@@iterator]()

返回一个新的迭代程序对象,它按插入顺序包含了地图对象中每个元素的[键,值]数组。

例子

var myMap=new Map();

var keyObj={},

keyFunc=function () {},

keyString="一个字符串";

//添加键

myMap.set(keyString,'和键一根绳子关联的值');

myMap.set(keyObj,'和键keyObj关联的值');

myMap.set(keyFunc,'和键keyFunc关联的值');

myMap.size//3

//读取值

我的地图。get(密钥字符串);//'和键一根绳子关联的值'

我的地图。get(key obj);//'和键keyObj关联的值'

我的地图。get(key func);//'和键keyFunc关联的值'

我的地图。get(' a string ');//'和键一根绳子关联的值'

//因为keyString==='一个字符串'

我的地图。get({ });//未定义,因为keyObj!=={}

myMap.get(function() {}) //未定义,因为keyFunc!==function () {}

传递数据

let values Map=new Map();

class payserviceclass {

构造函数(){}

getItem(键){

const String key=String(key);

if (valuesMap.has(key)) {

返回值地图。get(字符串键);

}

返回空

}

setItem(key,val) {

返回值Map.set(String(key),val);

}

clear() {

返回值地图。clear();

}

}

const payservice=new payservice class();

导出默认支付服务;

参考:

https://开发商。Mozilla。org/zh-CN/docs/Web/JavaScript/Reference/Global _ Objects/Map

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://工具。jb51。net/code/html jsrun测试上述代码运行效果。

更多关于Java脚本语言相关内容感兴趣的读者可查看本站专题: 《JavaScript数学运算用法总结》 、 《JavaScript数据结构与算法技巧总结》 、 《JavaScript数组操作技巧总结》 、 《JavaScript排序算法总结》 、 《JavaScript遍历算法与技巧总结》 、 《JavaScript查找算法技巧总结》 及《JavaScript错误与调试技巧总结》

希望本文所述对大家Java脚本语言程序设计有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: