“万能”的数组

【前面的话】说数组“万能”,可能夸张了一点,但是就个人观点,数组的运用是非常广泛的,这里的广泛当然也包含了在其他语言中的运用。举例说明,在javascript当中,由于字符串的不可变性,在进行字符串拼接等操作中,都极大的消耗了内存,这时候用数组来“装载”字符串,操作简单,又不消耗过多的内存,真可谓是“香饽饽”。下面我总结了数组当中常用的一些操作。

——首先我们来对数组进行简单的介绍:

//   var o = { };
//   o.c     属性;
//   o["c"]   键-值 的集合; 字典
// 这两个的效果是一样的

var array = [6,7,5,84,6];
//所有对象,都具有toString和valueOf
console.log(array.toString());//toSTring内部就调用join()
console.log(array.valueOf());//返回当前数组对象

1、 array.join();    // 将数组元素连接起来以构建一个字符串

1 // 将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
2  var array = ["刘备","张飞","关羽"];
3  console.log(array.join("|"));

2、 array.reverse();    // 颠倒数组中元素的顺序

1 //    将一个字符串数组的元素的顺序进行反转。["a","b","c","d]——>["d","c","b","a"]
2       var array = ["a","b","c","d"];
3       array.reverse();
4       console.log(array);

3、 array.filter();    // 使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组    //这里涉及到兼容旧环境的问题

 1 var array = [1500,1200,2000,2100,1800];
 2        //会把筛选的结果返回一个新数组
 3  array = array.filter(function(element,index,thisObj){
 4        //element 数组中的每一个元素
 5        //index 索引
 6        //thisObj 当前数组对象
 7     if (element >= 2000) {
 8          return false;
 9     }
10     return true;
11  });
12     console.log(array);

4、 array.indexOf();

            array.lastIndexOf();

//    ["c","a","z","a","x","a"]找到数组中每一个a出现的位置,找不到返回-1
        //indexOf  获取数组中第一个符合条件元素的位置
        //lastIndexOf   获取数组中最后一个符合条件的元素的位置     

      var array = ["a","a","z","a","x","a"];
      console.log(array.indexOf("a",2));
      console.log(array.lastIndexOf("a"));
//
      var index = -1;
      do {
           index = array.indexOf("a", index+1);
           if (index != -1) {
           console.log(index);
          }
       }while(index != -1);

5、 array.sort();

 1 //    ["c","a","z","a","x","a"]编写一个方法,求数组中每一个字符出现的次数
 2 //    排序
 3      var array = [3,6,1,5,10,2];
 4 //   array.sort();//如果不传参数,按默认的方式排序,按第一个字符的ascii码排序
 5 //   console.log(array);
 6
 7 //如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
 8 //如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
 9 //如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
10     array.sort(function(a,b) {
11         return a - b;
12     });
13     console.log(array);
14
15 //调用自己模拟的sort
16 //sort(array, function(a,b) {
17 //    return -(a - b);
18 //});
19 //console.log(array);

6、 array.splice();  //插入、删除或替换数组的元素

var a = [1,2,3,4,5,6,7,8]
a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]
a.splice(1,2);      // 返回 [2,3]; a is [1,4]
a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4]
a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []

7、 array.slice();  // 从当前数组截取一个新数组

var a = [1,2,3,4,5];
a.slice(0,3);    // 返回 [1,2,3]
a.slice(3);      // 返回 [4,5]
a.slice(1,-1);   // 返回 [2,3,4]
a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]

8、 array.forEach();   //遍历数组 

//  注意与filter的区别

//这里涉及到兼容旧环境

 1     var array = [4,6,7,8,3,46,8];
 2
 3         //forEach  遍历数组
 4 //        array.filter(function (item,index,obj) {
 5 //        })
 6
 7         for(var i = 0; i < array.length ; i++) {
 8             var item = array[i];
 9         }
10
11         array.forEach(function (item, index,obj) {
12             console.log(item);
13             console.log(index);
14             console.log(obj);
15         })

【输出】

9、 html5提供的方法:

i)indexOf ;    lastIndexOf

ii)filter ;  forEach

10、清空数组的三种方式:

var array = [1, 2, 3, 4];
//方式1
array.splice(0,array.length); //删除数组中所有项
//方式2
array.length = 0;  //length属性可以赋值,length是只读
//方式3
array = [];  // 推荐
时间: 2024-10-10 00:10:26

“万能”的数组的相关文章

C基础 万能动态数组

引言 - 动态数组切入 开发中动态类型无外乎list 或者 vector, 这里就是在C中实现vector结构容器部分. 对于C中使用的数据结构, 可以参照下面感觉很不错框架源码学习 , 感觉是<<C接口与实现>>的标准Demo twemproxy  https://github.com/twitter/twemproxy/tree/master/src 写的很清楚易懂, 给人一种铺面而来的美感. 关于动态数组设计的总思路, 主要体现在下面的数组结构 struct array {}

js基础和dom操作

1.HTML元素标记 - 超文本标记语言 决定你网页中有哪些东西 2.CSS - 样式表 决定你网页中的这些元素标记的样式和布局用:<style type="text/css"></style> 3.JS - JavaScript 决定你网页中的这些元素标记的功能和特效.只要放在HTML里就可以.用:<script type="text/javascript"><script> alert() 弹出警告对话框 :con

PHP学习(四)

Database 在 php5 之前,推荐使用的方式是例如 php_mysql.dll/php_psql.dll 等原生驱动. 比如, php_mysql.dll 的语法如下: // 首先,设置页面编码 header("Content-Type: text/html; charset=UTF8"); // 其次,建立数据库连接 $conn = mysql_connect("localhost", "root", "root")

数据结构与算法(刺猬书)读书笔记(1)----数组

在JavaScript中,数组其实是一种特殊的对象,用来表示偏移量的索引是该对象的属性,所以JavaScript的数组本质上是对象.同时这些数字索引在内部会被转换成为字符串类型,因为JavaScript对象中的属性名必须是字符串.此外,JavaScript数组还有一个特点,就是数组的每一项可以保存任何类型的数据,而且,数组的大小是可以动态调整的. 1. 创建数组 数组的创建方法有两种,第一种是简单的声明一个数组变量: var numbers = []; var numbers = [1, 2,

PHP JSON数组与对象的理解

在PHP后端和客户端数据交互的过程中,JSON数据中有时格式不定,一会儿是数组,一会儿是对象,弄得客户端开发人员要崩溃的感觉. 因此,前后端相关人员先对PHP的json_encode函数原理有必要的了解是最重要的一个环节. PHP中的array是个万能的数据结构,并不像其它语言根据需要的场景会定义很多约束性的数据类型来描述结构,所以PHP程序员是很难给客户端人员讲清楚返回的是什么结构的数据的. 也就变成明明是通过PHP的数组数据编码成json的,但输出值有时是数组.有时是对象的情况. /* *

php+mssql 已经写好的万能函数

<?php /************************************************************************************************** | 类名:databaseClass | 功能描述:操作数据库.内有函数link_array(),equation_array(),insert(),update(),delete(),query() | 初始化数据: $select(要操作的数据库名),$link(已经打开的一个数据库

web前端学习笔记:JavaScript数组

今天主要给大家介绍javascript中数组的操作方法及函数的介绍,数组在其中的主要作用是使用单独的变量名来存储一系列的值.下面通过一些简单的javascript实例为大家讲解数组,具体的javascript教程如下: 字符串, JavaScript 字符串就是用'' 和""括起来的字符表示. 字符字面量, \n 换行, \t 制表, \b 退格, \r 回车, \f 进纸, \\ 斜杠,\' 单引号(') ,\" 双号(") \xnn 以十六进制代码nn 表示的一

游戏公司CTO带你做万能游戏框架【进阶就业班】

课程大纲 第一章 万能框架设计模式 设计模式  工厂模式 设计模式  策略模式 设计模式  观察者模式 设计模式  单例模式 互动答疑 第二章 设计模式  代理模式 设计模式  门面模式 设计模式  建造者模式 设计模式  组合模式 对模式用法总结 互动答疑 第三章 万能框架之框架实现 框架原理讲解 框架实现  消息类 实现 框架实现之 事件系统,数据结构 消息链表实现 框架实现   各个模块manager 互动答疑 第四章 框架实现  个模块基础类 框架实现  使用注意事项 互动答疑 第五章

Javascript简明教程(3) 数组

JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素.要取得Array的长度,直接访问length属性: [JavaScript] 纯文本查看 复制代码 ? 001 002 var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6 请注意,直接给Array的length赋一个新的值会导致Array大小的变化: [JavaScript] 纯文本查看 复制代码 ? 001 002 003 004 005 00