如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用

简介:

好久没有写这个系列的文章了,不知道还有没有人等我的下文。哈哈,臭美一个。
在学习的过程中,好几次都准备写了,可是每次动笔的时候总会想,这个东西写出来有意义么?如果是人所共知唯独我不知道的,就算写出来对大家也没什么帮助,只能算是我的学习笔记罢了,放在这个下面显然不合适。

厚积薄发,希望每一篇文章都能对大家有所帮助(真希望每一篇都是精品,可惜水平有限啊),由于我也是初学者,文中的东西可能比较适合新手,如果有错误,请告知,谢谢。
如何让你的程序运行的更快(1) 中,讲了Java 中的 String 和 StringBuffer,这里又跳到 JavaScript 的 Array,呵呵,学到哪,就写到哪吧。
正文: 
今天在看到 JavaScript 中 Array 这一部分的时候,发现字符串也可以作为数组的下标,以前还真不知道,孤陋寡闻。。。。
既然提供了这个特性,那么就有它的存在价值,我们来看看有什么用,欢迎大家补充。

首先,Array 是从 Object 继承下来,所以 Array 具有 Object 有的任何能力。看看Object作为集合的情况:

新建: var  object  =   new  Object(); 或  var  object  =   {};
增加: object[strIndex ] 
 = 
 value; (strIndex 为string)
删除:
 delete 
 object[strIndex ];
遍历:
 for  (  var  strObjIndex  in  object ) object[strObjIndex ]; 

code 1:

var  object  =  {};    // var object = new Object(); 二者等价 
object[ " First "  =   " Firstmm "  ;
object[
 " Second "  =   " Secondmm " 
;
object[
 " Third "  =   " Thirdmm " 
;
delete  object[ " Second " 
]; 

for  (  var strObjIndex in 
object )
    alert(
 strObjIndex = " strObjIndex + "\nobject[" +strObjIndex + "] = "
object[strObjIndex]); 

除了我们熟悉的方法外,Array也是可以用字符串做下标,像code 1 中的 Object 一样。
code 2:

var  array  =   new  Array();    // var array = []; 二者等价 
array[ " First "  =   " Firstgg "  ;
array[
 " Second "  =   " Secondgg " 
;
array[
 " Third "  =   " Thirdgg " 

delete  array[ " First " 
]; 

for  (  var  strArrayIndex  in 
 array )
    alert(
 " strArrayIndex =  " + strArrayIndex + "\narray[" +strArrayIndex + "] = " array[strArrayIndex]); 

在某些情况下,用字符串做下标可以提高我们的访问效率,
例如我们要在Array中检索出一个指定的值,通常做法,我们需要遍历整个数组,如下:
code 3:

var  arrayTest  =   new  Array();    // var arrayTest = []; 二者等价 
// 
初始化arrayTest 
arrayTest.push( " Blog " );           // arrayTest[0] = "Blog"; 二者等价 
arrayTest.push( " Java "  );
arrayTest.push(
 " MaJianan " 
);

var  output  =   "" ;    // 用于输出 


// 我们需要检索出值为 Majianan 的元素,通常做法如下: 
for ( var  i = 0 ; i < arrayTest.length;i ++  ){
    if (arrayTest[i] == " MaJianan " 
){
        output 
 =   " 用整数做下标的Array:哈哈! ^+^ \n " 
;
        output 
 =  output  +   "  "   +  i  +   " 次才找到\n " 
;
        output 
 =  output  +   " arrayTest[ "   +  i  +   " ] =  "   + 
 arrayTest[i];
        alert(output);
    }
 else 
{
        output 
 =   " 用整数做下标的Array:555555555 \n " 
;
        output 
 =  output  +   "  "   +  i  +   " 次没有找到\n " 
;
        output 
 =  output  +   " 找到的是arrayTest[ "   +  i  +   " ] =  "   + 
 arrayTest[i]
        alert(output);
    }
}

code 4:

// 使用字符串做数组下标 
var  arrayTest1  =   [];
arrayTest1[
 " blog "  =   " Blog " 
;
arrayTest1[
 " java "  =   " Java " 
;
arrayTest1[
 " majianan "  =   " MaJianan " 


var  key = " majianan " 


if ( typeof (arrayTest1[key]) == " undefined " 
){
    output 
 =   " 用字符串做下标的Array:555555555 \n " 
;
    output 
 =  output  +   " 没找到下标为 "   +  key  +   " 的东东。\n " 
;
    output 
 =  output  +   " 明明没有这个东西,还让我找,耍我呢吧!!! " 
;
    alert(output);
    // do sth 

} else  {
    output 
 =   " 用字符串做下标的Array:哈哈! ^+^ 一次搞定\n " 
;
    output 
 =  output  +   " 找到arrayTest1[ "   +  key  +   " ] =  "   + 
 arrayTest1[key];
    alert(output);
    // do sth 



var  key1 = " hello " 


if ( typeof (array[key1]) == " undefined " 
){
    output 
 =   " 用字符串做下标的Array:555555555 \n " 
;
    output 
 =  output  +   " 没找到下标为 "   +  key1  +   " 的东东。\n " 
;
    output 
 =  output  +   " 明明没有这个东西,还让我找,耍我呢吧!!! " 
;
    alert(output);
    // do sth 

} else  {
    output 
 =   " 用字符串做下标的Array:哈哈! ^+^ 一次搞定\n " 
;
    output 
 =  output  +   " 找到arrayTest1[ "   +  key1  +   " ] =  "   + 
 arrayTest1[key1];
    alert(output);
    // do sth 


Array的这个特性(用字符串做下标)可以用来高效的检索Unique的字符串集合。
遍历用整数做下标的Array的时间复杂度是O(n),而遍历用字符串做下标的Array的时间复杂度是O(1)。
所有代码:

 

 本文转自BlogJavaOo缘来是你oO的博客,原文链接:如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用,如需转载请自行联系原博主。

相关文章
|
6天前
|
JavaScript 前端开发 开发者
JavaScript字符串的常用方法
在JavaScript中,字符串处理是一个非常常见的任务。JavaScript提供了丰富的字符串操作方法,使开发者能够高效地处理和操作字符串。本文将详细介绍JavaScript字符串的常用方法,并提供示例代码以便更好地理解和应用这些方法。
35 13
|
2月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
2月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
35 2
|
2月前
|
JavaScript 前端开发
利用事件循环提高 JavaScript 程序的性能
本文介绍了事件循环在JavaScript中的工作原理,以及如何通过合理利用事件循环来优化程序性能,包括异步操作、任务优先级和避免阻塞等技巧。
|
2月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
226 1
|
3月前
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
54 2
|
3月前
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
50 3
|
3月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
3月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
59 1
|
3月前
|
JavaScript 前端开发 API
JS中数组的方法flat()怎么用
JS中数组的方法flat()怎么用
34 0