JavaScript中心语法——数组

数组

数组是什么

数组的观点

数组是值的有序鸠合,数组中的每一个值叫做 一个元素,而每一个元素在数组中都有一个唯一的位置。这个位置用数字示意,叫做索引数组,用字符串示意叫做关联数组。
JavaScript数组是无范例的,数组的元素可所以任何范例。比方字符串、数字值、布尔值等。而且每一个数组中的差别元素多是差别范例。
JavaScript数组是动态的,依据须要能够动态的向数组插进去新的元素,或许从数组中删除指定的元素。

一维数组

定义数组

数组的最大作用就是用于存储多个值。在一个数组中的差别元素能够使差别数据范例。
虽然数组具有字面量体式格局的定义,然则与原始范例的字面量体式格局的定义差别。

有以下三种体式格局;

   1.字面量/直接量体式格局定义
      var 数组称号 = [元素一, 元素二, ...]
  
var arr1 = [];// 定义一个空数组
var arr2 = [100, '卧龙学苑', true, undefined];
var arr6 = [10];

console.log(arr6);


    2.组织函数体式格局
      var 数组称号 = new Array(元素一, 元素二, ...)
      var 数组称号 = new Array(length)
      * length - number范例,示意数组的长度(存在元素的个数)
 
var arr3 = new Array();// 定义一个空数组
var arr4 = new Array(100, '卧龙学苑', true, undefined);
console.log(arr4);

var arr5 = new Array(10);
console.log(arr5);


    3.函数体式格局定义
      var 数组称号 = Array(元素一, 元素二, ...)
      var 数组称号 = Array(length)
      * length - number范例,示意数组的长度(存在元素的个数)

var arr7 = Array();// 定义一个空数组
var arr8 = Array(100, '卧龙学苑', true, undefined);
var arr9 = Array(10);
console.log(arr9);

索引数组

索引数组示意数组中元素的位置运用数字值来示意的,平常称之为角标或下标,数组的长度与元素的个数是一致的。

var arr = [];// 定义一个空数组
arr[0] = '卧龙学苑';索引数组的下标是从0最先的
arr[1] = true;

console.log(arr.length);

关联数组

关联数组是存储元素的位置运用字符串来示意,平常称之为(name或key)。

  关联数组 - 示意数组中元素的位置运用字符串来示意的
     注重:关联数组的数组长度与元素的个数不一致
     缘由:JavaScript的官方不支持关联数组的
 
var arr = [];// 定义一个空数组
arr['name'] = '张无忌';
arr['age'] = 19;
arr['job'] = '教主';
// 输出的效果:[ name: '张无忌', age: 19, job: '教主' ]
console.log(arr.length);

关联数组这个观点,并不属于ECMASCRIPT5这个版本的标准规范内容。现实测试的效果示意,这中数组在JavaScript语言中是能够运用的。
注重;关联数组的称号(name或key)是字符串,必需运用单引号或双引号将他包裹。

希罕数组

希罕数组就是包括0最先的不一连索引的数组

   索引数组的位置许可不一连的 - 没有定义元素的位置默以为空(undefined)
     希罕数组 - 数组的长度与元素的个数不一致的
 
var arr = [];
arr[0] = '张无忌';
arr[3] = 19;
arr[5] = '教主';

console.log(arr.length);


    获得undefined值的几种体式格局:
    1.定义变量,但未初始化值
    2.定义变量,并初始化值为 undefined
    3.接见数组中未定义的位置的元素值(默以为undefined)
 

// 将希罕数组举行处置惩罚,获得一般的索引数组
var newArr = [];
for (var i=0; i<arr.length; i++) {
    // 比较当前值是不是即是 undefined
    if (arr[i] !== undefined) {
        newArr.push(arr[i]);
    }
}

数组的长度

每一个数组都有一个length属性,示意数组的长度,上面代码中也有提到。

数组元素的读取

数组的重要作用是用于存储和读取数据信息。

// 定义数组的默以为索引数组
var arr = ['卧龙学苑',100,null];
// 挪用数组称号时,获得只是存储一切元素数据的鸠合
console.log(arr);
// 接见索引数组中的元素 -> 数组称号[索引值]
console.log(arr[0]);
// 假如接见了数组中未定义的位置的元素时 - 语法不抱错,效果为 undefined
console.log(arr[5]);
// 索引数组中索引值最大为 arr.length - 1

// JavaScript中的关联数组定义与接见都是没有问题的
var arr1 = [];
arr1['name'] = '张三';
arr1['age'] = 19;
arr1['job'] = '匪贼';

console.log(arr1['name']);

数组元素的修正

数组元素的修正不仅能够从数组中读取指定的元素,还能够依据需求修正数组中指定的元素值。

 索引数组
var arr1 = [];
arr1[0] = '卧龙学苑';
arr1[1] = true;
 关联数组
var arr2 = [];
arr2['name'] = '张无忌';
arr2['age'] = 19;
arr2['job'] = '教主';
经由过程数组的索引值找到对应元素的位置,再经由过程从新赋值的操纵举行修正
arr1[0] = 100;
console.log(arr1);

arr2['name'] = '周芷若';
console.log(arr2);
假如索引值是新的,就是新增数组的元素操纵
arr1[4] = 'wolongxueyuan';
console.log(arr1);

数组元素的删除

数组元素的删除不仅能够依据需求修正数组中指定的元素值,也能够删除数组中指定的元素值。数组删除指定元素值能够运用delete关键字。

 索引数组
var arr1 = [];
arr1[0] = 'wolongxueyuan';
arr1[1] = true;
 关联数组
var arr2 = [];
arr2['name'] = '张无忌';
arr2['age'] = 19;
arr2['job'] = '教主';


    运用 delete 运算符举行删除数组的元素
     注重 - 只是删除元素的数据内容,而对应的位置被保存 -> 希罕数组
  
delete arr1[0];
console.log(arr1);

for…in语句

在ECMAScript中新增的for…in语句,一样也能够用在遍历数组。
for…in语句还能够用在遍历希罕数组,轮回的每次将一个有用元素返回。
代码示例

var arr = ['卧龙学苑', 100, true, undefined];

    for (var 变量 in 数组) {
        语句块
    }
     变量 - 获得的是数组的索引值
 
for (var i in arr) {
    console.log(arr[i]);
}

     for语句
       轮回的最先和完毕,都是由程序员决议的
     for..in语句
       轮回只能从最先到完毕
 
for (var i=0; i<arr.length; i++) {
    console.log(arr[i]);
}

第二种表达体式格局;

 关联数组的length属性为 0
var arr1 = [];
arr1['name'] = '张无忌';
arr1['age'] = 19;
arr1['job'] = '教主';

for (var i=0; i<arr1.length; i++) {
    console.log(arr1[i]);
}
 for..in语句能够轮回遍历关联数组, for语句不可
for (var i in arr1) {
    console.log(arr1[i]);
}

 希罕数组 - 数组的长度与元素的个数不一致
var arr2 = [];
arr2[0] = '张无忌';
arr2[3] = 19;
arr2[5] = '教主';

for (var i=0; i<arr2.length; i++) {
    console.log(arr2[i]);
}
 for..in语句轮回遍历希罕数组(直接获得有用元素值), for语句不可
for (var i in arr2) {
    console.log(arr2[i]);
}

二维数组

数组是能够嵌套的,这就意味着一个数组能够作为一个元素被包括在另一个数组内里。
代码示例

var arr = [];// 定义一个空数组
arr[0] = [100,200,300];
arr[1] = [400,500,600];
arr[2] = [700,800,900];

 console.log(arr);
 接见二维数组中的元素
var result = arr[0];
/*console.log(result[0]);

console.log(arr[0][0]);*/

 轮回遍历二维数组
for (var i=0; i<arr.length; i++) {
    console.log(arr[i]);
    for (var j=0; j<arr[i].length; j++) {
        console.log(arr[i][j]);
    }
}

定义二维数组
定义一个规整的二维数组就是指外层数组的元素的内部数据中元素的个数是一致的。
假如定义一个不规整的二维数组,所谓的不规整的二维数组,就是指作为外层数组的元素的内部数据中元素的个数是不一致的。
操纵二维数组中的详细元素,读取二维数组中真正的元素内容,须要一连会用两个索引值才完成。第一个索引值示意外层数组的,第二个索引值示意内部数组的。

var arr = [];// 定义一个空数组
arr[0] = [100,200,300];
arr[1] = [400,500,600];
arr[2] = [700,800,900];

 console.log(arr);
 接见二维数组中的元素
var result = arr[0];
console.log(result[0]);

console.log(arr[0][0]);*/

 轮回遍历二维数组
for (var i=0; i<arr.length; i++) {
    console.log(arr[i]);
    for (var j=0; j<arr[i].length; j++) {
        console.log(arr[i][j]);
    }
}
    原文作者:武文佳
    原文地址: https://segmentfault.com/a/1190000015950747
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞