1.数组创建及初始化

var obj=new Array();

var arr=[];

可以延伸为长度一定的,字面量定义数组

2.堆栈 按值传递 引用类型

数组是引用类型,不是值传递,

栈:系桶自动分配和释放 ,比如函数的参数、局部变量 先进后出 一级缓存

堆:一般由程序员分配释放,程序结束后系统回收 先进先出 二级缓存

3.关联数组和索引数组

关联数组即hash数组,本质上js底层,一切对象都是关联数组

   所以以下写法能产生运行结果,
能运行结果:2
var keys=[1,2,3,4];
console.log(keys["1"]);

4.删除数组里面重复元素:(常规解法&hash数组解法对比)

1.常规方法思路:创建一个数组,然后用原有数组里面的元素和新数组里面的所有元素依次对比,若不同,就将此元素增加为新数组最后一个元素

            function f(arr) //实现删除数组内重复的元素
{
var arrc=[];
//拿出arr第一个元素,放入arrc数组第一个
arrc[0]=arr[0];
//遍历arr数组,从1开始,取出元素,与arrc(copy数组)中元素比较
for(var i=1;i<arr.length;i++)
{
for(var j=0;j<arrc.length;j++)
{
if(arrc[j]==arr[i])
break;//相等则结束此次的寻找,跳出循环
}
j==arrc.length&&(arrc[arrc.length]=arr[i]);//不相等则赋值给数组最后一个元素
}
return arrc;
}
console.log(f([1,2,2,1,4,5]));
     运行结果:[1,2,4,5]

2.利用hash数组解决,利用hash的特点,大大提高效率  ,注意返回是字符类型,可以根据需要转换。

function f1(arr){
//新建一个hash数组
var hash=[];
hash[arr[0]]=1;//初始化hash数组第一个元素
for(i=1;i<arr.length;i++)
{
if(hash[arr[i]]==undefined)
hash[arr[i]]=1; //如果hash数组中arr[i]对应的元素未定义,说明未重复,则将其放入hash数组中
}
//结束遍历之后,取出hash数组
var back=[];
for(back[back.length] in hash);
return back;
}
console.log(f1([1,2,2,1,4,5]));
          运行结果:["1","2","4","5"]

关于执行的效率上,特别当数据增多时,hash数组由于不需要去遍历数组查找,所以在执行效率上,将远远高于常规方法。

JavaScript笔记之数组 keyword(存储和释放&堆栈 & 按值 引用)的更多相关文章

  1. [Effective JavaScript 笔记]第54条:将undefined看做“没有值”

    undefined值很特殊,每当js无法提供具体的值时,就会产生undefined. undefined值场景 未赋值的变量的初始值即为undefined. var x; x;//undefined ...

  2. Javascript进阶篇——(数组)笔记整理

    什么是数组数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数值. <script type="text/javascript"& ...

  3. javascript笔记整理(数组)

    数组是一个可以存储一组或是一系列相关数据的容器. 一.为什么要使用数组. a.为了解决大量相关数据的存储和使用的问题. b.模拟真是的世界. 二.如何创建数组 A.通过对象的方式来创建——var a= ...

  4. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  5. JavaScript学习笔记之数组(一)

    数组基础篇 一.数组概述 1. 数组的语法 数组(array)是按次序排列的一组值.每个值的位置都有编号(从0开始). var arr=[1,2,3] //arr[0]=1 任何类型的数据,都可以放入 ...

  6. JavaScript笔记02——基本语法(包括函数、对象、数组等)

    Doing Math & Logic Conditional & Looping Functions Objects Arrays Doing Math & Logic 1.J ...

  7. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  8. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  9. javascript中关于数组的一些鄙视题

    一.判断一个数组中是否有相同的元素 /* * 判断数组中是否有相同的元素的代码 */ // 方案一 function isRepeat1(arrs) { if(arrs.length > 0) ...

随机推荐

  1. 黑马程序员——JAVA基础之set集合

    ------- android培训.java培训.期待与您交流! ---------- Set:       元素是无序(存入和取出的顺序不一定一致),元素不可以重复.    Set接口中常用的类: ...

  2. Agent admitted failure to sign using the key

    SSH生成id_rsa, id_rsa.pub后,连接服务器却报: Agent admitted failure to sign using the key 错误. 解决方法: 在当前用户下执行命令: ...

  3. Hadoop 安装记录

    第一步:打开/etc 下面的 profile文件,在其中加入环境变量设置的代码 done JAVA_HOME=/home/hadoop/installer/jdk7u65 PATH=$JAVA_HOM ...

  4. PostgreSQL连接Python

    安装 PostgreSQL可以用Python psycopg2模块集成. sycopg2是Python编程语言的PostgreSQL数据库的适配器. 其程序代码少,速度快,稳定.不需要单独安装这个模块 ...

  5. Java 多线程程序设计

    课程  Java面向对象程序设计 一.实验目的 掌握多线程程序设计 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java有 ...

  6. Linux中的free命令

    解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][ ...

  7. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)

    使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) Note 这一章节的内容是基于 Scott Gonzalez 一篇博客 Building ...

  8. [轉]Android的内存泄漏和调试

    一. Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的 ...

  9. 【extjs】 extjs5 Ext.grid.Panel 搜索示例

    先看效果图: 页面js: <script type="text/javascript"> /** * 日志类型 store * */ var logTypeStore ...

  10. Spring boot配合Spring session(redis)遇到的错误

    背景:本MUEAS项目,一开始的时候,是没有引入redis的,考虑到后期性能的问题而引入.之前没有引用redis的时候,用户登录是正常的.但是,在加入redis支持后,登录就出错!错误如下: . __ ...