码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法javascript描述笔记--数组篇

时间:2016-08-07 09:37:10      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

数组的定义

JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中的属性名必须是字符串。在内部被归类为数组。由于 Array JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用。

  

使用数组:

1.创建数组

① 使用 [] 操作符 ,var arr=[] ,该方法效率最高。

② 调用 Array 的构造函数创建数组,var myArr=new Arrery()

 

2.读写数组

 

3.由字符串生成数组,调用字符串对象的split()方法。

  

4.对数组的整体性操作:(这里注意,曾经面试题出现)

浅复制:将数组a赋值给数组b,此时的数组b只是对数组a的引用,当数组a发生改变时,数组b也随着发生改变。

var a=[];
for(var i=0;i< 5;i++){
    a[i]=i;
}

var b=a;
console.log(a[1]);
console.log(b[1]);//赋值引用前 1

a[1]=999;
console.log(a[1]);
console.log(b[1]);//赋值引用后 999

深复制:可以封装一个copy()方法。

 

存取数组:

1.查找元素:indexOf() lastIndexOf()

 

2.数组的字符串表示:将数组转化为字符串:join()  toString()

说到这里的toString(),我想起了toString()  valueof() 的隐式调用。这里很有意思,也略坑,不严谨的说下,当需要计算式,会隐式调用valueof()。当需要显示数据或者结果时会调用toString()。有兴趣的同学可以google一下。

 

3.由已有的数组创建新数组:

concat()方法合并已有的多个数组,创建新数组

splice()方法截取出一个数组的子集创建新数组

 

可变函数:

1.为数组增添元素:

push()方法将元素增添至末尾, unshift()将元素增添至开头

 

2.从数组中删除元素:

 pop() 方法可以删除数组末尾的元素

 Shift() 方法可以删除数组的第一个元素

 

3.从数组中间位置添加和删除元素:splice()

 

4.数组排序:正序(字典顺序)sort(),   倒序;reverse()

 

迭代器:

对数组的每个元素运用一个函数,可以返回一个值,一组值或一个新数组

  • 不生成新数组的迭代方法; forEach()  every()  some()  reduce()
  • 生成新数组的迭代方法;map() filter()

 

二维和多维数组:

1.创建二维数组

JavaScript 只支持一维数组,但是通过在数组里保存数组元素的方式,可以创建多维数组。二维数组类似由行和列构成的数据表格。在 JavaScript 中创建二维数组,先创建一个数组,然后让数组的每个元素也是一个数组。

这里 通过扩展数组对象增加一个新方法,该方法设定数组的行数、列数和初始值。下面是这个方法的定义(引用JavaScript: The Good PartsOReilly)一书的一段代码):

Array.matrix = function (numrows, numcols, initial) {
    var arr = [];
    for (var i = 0; i < numrows; ++i) {
        var columns = [];
        for (var j = 0; j < numcols; ++j) {
            columns[j] = initial;
        }
        arr[i] = columns;
    }

 

2.处理方式i:使用嵌入式的for循环

 

对象数组:

数组除了包含基本数据类型元素(数字,字符串)还包含对象,数组的方法和属性对对象依然适用。在对象中,可以使用数组存储复杂的数据。

 

 

注意:本篇是我翻阅《数据结构与算法javascript描述》的所写大纲内容的过程笔记,需要深入学习的同学,还需看原书。初学者可以以此作为学习的大纲。至于好厉害的人,忽略本文,当然可以提建议,我定当修改。

本系列文章会持续更新。

数据结构与算法javascript描述笔记--数组篇

标签:

原文地址:http://www.cnblogs.com/LIUYANZUO/p/5745558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!