JavaScript Array 对象:如何快速查找一个值是否存在,不存在再push()!

momoca 2008-02-25 09:51:34
JavaScript Array 对象:如何快速查找一个值是否存在,不存在再push()!

js:
var keyArray = new Array();
attrib.push('page');
attrib.push('123');
//如果查找到attrib里以经有这两个了就不再添加了.
//主要是我不想重复添加...怎么办?有没有快速且效率高的方法????
attrib.push('page');
attrib.push('123');
...全文
9614 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxly21 2010-06-16
  • 打赏
  • 举报
回复
mmmmmmmmmmmmmmmmmmmm
uteflyaway 2010-03-16
  • 打赏
  • 举报
回复
mark
hywill 2009-11-25
  • 打赏
  • 举报
回复
eee
roviury 2008-10-24
  • 打赏
  • 举报
回复
總結:

var func=function(){alert('高級應用');};

var coll = {};
coll['page']=1;
coll['123']=2;
coll['page']=3; // 亦可以 if(!coll['page']) coll['page']=3; ,不過並無需要.
coll['123']=4;
coll[func]=5;

alert(coll.page); //3
alert(coll[123]); //4, 不能 coll.123
alert(coll[func]); //5, 在js,key可以是function,object,array

//coll[key]=value;

page,123 是 keys
1,2,3,4 是 values


/*
//PS.
var collb=coll;
coll[func](); //5
collb[func]=func;
coll[func](); //func,因此coll完全相同於collb,它們有相同的指針Pointer.
//array和object都可當作js的pointer使用,但是應用方面很少.
*/
hzq3554055 2008-08-19
  • 打赏
  • 举报
回复
mark
擒兽 2008-05-23
  • 打赏
  • 举报
回复
楼主直接用{} 不要用[]
前者会自动覆盖重复,在其它语言有的叫字典,有的叫HashSet。
后者数组不会处理重复。

异常处理,楼主可以用
try{

}catch(e){

}

收工
llddy 2008-02-26
  • 打赏
  • 举报
回复
哈哈 ...究竟 多少分数 才能升级啊?
muxrwc 2008-02-26
  • 打赏
  • 举报
回复
- -
为什么都升星星了,回答还是总被人无视..伤心飘走..
活靶子哥哥 2008-02-26
  • 打赏
  • 举报
回复
如果 indexOf 则...
qiangv 2008-02-26
  • 打赏
  • 举报
回复
TO LZ:
我想没辙。
只能2楼那么搞了。
这种问题,只有用hash表最快。
hash表value直接对应adress。js无法实现吧。
qiangv 2008-02-26
  • 打赏
  • 举报
回复
2楼的是hash表?

只是一般的数组~
gzdiablo 2008-02-26
  • 打赏
  • 举报
回复
2楼是用hash表 速度肯定快
muxrwc 2008-02-26
  • 打赏
  • 举报
回复
那就分着来好了..
把非string boolean undefined number
类型的数据,换成另一个array来存,这样添加对象的时候才会遍历.
不过同样需要考虑个问题,就是资源释放.
即删除本array的时候要删除temparray里的引用.
2008-02-26
  • 打赏
  • 举报
回复
同意3楼
gzdiablo 2008-02-26
  • 打赏
  • 举报
回复
忘记说3楼的方法中
内容必须是 数字和字符串 其他的可能不行
gzdiablo 2008-02-26
  • 打赏
  • 举报
回复
手误 3楼写成2楼了 呵呵

js的对象就是用hash的方式储存的 速度比大数据遍历要快
不过array遍历速度也不慢 如果对效率要求不高的话 遍历array也行
不过上面用indexOf肯定是不行的 而且Array里面存储的不一定是字符串或数字 就算是字符串也不能这样

Array.prototype.indexOf=function(value){for(var i=0,l=this.length;i<l;i++)if(this[i]==value)return i;return -1;}


这个是我用的.
qiangv 2008-02-26
  • 打赏
  • 举报
回复
3楼的也不是hash
只是用对象的特性来记录是否有该值。
估计内在也是循环一遍的。

hash是根据key可以直接计算出其adress。而进而得到value。
aCatInNight 2008-02-26
  • 打赏
  • 举报
回复
不过二分法需要先排序,插入时另外一个数组存放,好像更麻烦了
aCatInNight 2008-02-26
  • 打赏
  • 举报
回复
都是循环最快啦,最多是遍历一次.如果是判断类型是数字,数组又很大的话,是不是可以用二分法
萝卜波 2008-02-26
  • 打赏
  • 举报
回复
2楼的是一般数组

3楼的是hash

星星就是不一样
加载更多回复(8)
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 FASTA格式是生物信息学中一种重要的文本格式,用于表示核酸和氨基酸序列。在该格式中,DNA的四种碱基(腺嘌呤、胸腺嘧啶、胞嘧啶和鸟嘌呤)分别用A、T、C、G表示,而RNA中胸腺嘧啶被尿嘧啶(U)替代。蛋白质序列则用20个单字母代码表示氨基酸,如苯丙氨酸用F表示,酪氨酸用Y表示。许多生物信息学数据库,如DIP和NCBI,都以FASTA格式存储大量生物序列数据供研究者使用。研究者在使用BLAST等序列比对工具后,比对结果也常以FASTA格式呈现。在分析这些序列时,研究者可能需要对特定功能域或功能位点进行研究,例如在蛋白质相互作用预测中,对氨基酸序列进行二联体(连续两个氨基酸)或三联体(连续三个氨基酸)特征编码分析,这有助于了解蛋白质的结构和功能。 为了满足对大型FASTA格式序列文件进行特定长度词条特征分析的需求,本文提出了一种新的算法——压缩索引树统计算法。压缩索引树是一种高效存储和检索序列数据的数据结构,该算法通过减少存储空间需求和加快查询速度,优化了现有的生物信息学分析工具,这些工具大多缺乏特定长度词条特征分析功能。在FASTA格式文件中,序列的统计是对28个字母的字符串进行的。文件中,序列说明行以“>”开头,后面是描述序列的文字,之后直到下一个“>”开头的说明行之间是序列本身。目前,常见的分析工具如matlab生物信息学工具箱、PexFinder和BLAST等,均未提供特定长度词条特征分析功能。 文章提到的作者初砚硕是生物信息学领域的学者,他在东北林业大学获得计算机应用技术硕士学位,还在大连理工大学分别获得生物工程和计算机应用技术(第二学位)学士学位。通信联系人刘亚秋也具备丰富的研究背景。FASTA格式作为生物信息学研究的基础,简洁地存储了大量核酸和蛋白质序列信息。随着生物信息学
内容概要:本文档《MATLAB 语言从入门到精通:基础语法与实战案例教程》系统介绍了MATLAB的基础知识及其应用。首先概述了MATLAB的定义、核心优势和适用场景,接着详细讲述了MATLAB的安装与界面构成。文档深入浅出地讲解了MATLAB的基础语法,包括变量与数据类型、运算符、流程控制语句、函数定义与调用等。随后,重点介绍了MATLAB的核心数据结构——矩阵与数组的操作,涵盖矩阵创建、向量操作、单元格数组和结构体的使用。绘图与可视化部分展示了如何使用`plot`、`subplot`、`plot3`等函数进行二维和三维图形的绘制。数计算章节涵盖了线性代数求解、曲线拟合、数积分和微分方程求解等内容。符号计算部分介绍了符号变量、微积分运算和方程求解。最后,通过一个信号处理与频谱分析的实战案例,演示了MATLAB在实际问题中的应用,并分享了一些高效的编程技巧。; 适合人群:具备一定数学基础的工科学生、科研人员以及对数据分析、算法开发感兴趣的初学者。; 使用场景及目标:①学习MATLAB的基本语法和核心数据结构,掌握矩阵、向量、单元格数组和结构体的操作;②理解并能够应用MATLAB的绘图和可视化功能;③掌握线性代数求解、曲线拟合、数积分和微分方程求解等数计算方法;④学会使用符号计算工具进行精确的数学表达式处理;⑤通过实战案例,掌握信号处理与频谱分析的应用技能。; 其他说明:文档提供了丰富的实例和代码片段,帮助读者更好地理解和掌握MATLAB的各项功能。推荐结合官方文档、经典教材和在线课程进行学习,通过大量实践提升应用能力。
内容概要:本文提出了一种高保真的氢气供应链(HSC)规划模型,旨在评估氢气在低碳能源系统中的成本竞争力。该模型综合考虑了氢气的生产、传输和储存方式,特别是卡车和管道的灵活调度,以应对时空变化的需求和能源价格波动。研究结果表明,将卡车建模为兼具传输和存储功能的资产,可以显著降低成本并提高系统灵活性。通过对美国东北部的案例研究,文章展示了在适度碳政策和电解槽成本降低的情况下,电解槽制氢具有成本效益的潜力。此外,卡车的灵活调度对于实现可再生能源集成和HSC成本最小化至关重要。 适合人群:从事能源系统规划、氢能技术研发和政策制定的专业人士。 使用场景及目标:①评估不同制氢技术(如电解槽和蒸汽甲烷重整)在不同碳政策和技术成本下的经济可行性;②优化氢气供应链的基础设施规划,特别是卡车和管道的调度;③分析移动存储资源(如气体和液体卡车)在氢气供应链中的作用;④探讨未来氢需求增长对电力系统和HSC耦合建模的需求。 阅读建议:此资源深入探讨了氢气供应链的复杂建模和优化问题,建议读者具备一定的能源系统和优化理论基础。在阅读过程中,重点关注模型的关键假设、变量设置及其对结果的影响,结合实际应用场景进行理解和思考。

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧