/**********************************************************************
** author : Bugliu
** date : 2018-12-04
** description : 数组
** 学习网站 : www.liaoxuefeng.com
**********************************************************************/
// 数据用[]括起来,可包含任意数据类型,通过索引访问每个元素
var arr = [1, 2, 3.14, 'hello', null, true];
console.log(arr); // 1, 2, 3.14, "hello", null, true
console.log(arr[0]); // 1
console.log(arr.length);// 6
// 直接给Array的length赋一个新的值会导致Array大小的变化
var arr = [1, 2, 3];
arr.length = 5;
console.log(arr); // 1, 2, 3, ,
arr.length = 1;
console.log(arr); // 1
//可以通过索引把对应的元素修改为新的值
var arr = [10, 11, 12];
arr[1] = 'Hi';
console.log(arr); // 10, "Hi", 12
//如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化
arr[4] = 'here';
console.log(arr); // 10, "Hi", 12, empty, "here"
// 获取指定元素位置
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(arr.indexOf('b')); // 1
// 数组截取slice() 相当于字符串的substring()
// slice()的起止参数包括开始索引,不包括结束索引
console.log(arr.slice(0, 3)); //"a", "b", "c"
console.log(arr.slice(3)); //"d", "e", "f"
//如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,
//我们可以很容易地复制一个Array
var aCopy = arr.slice();
console.log(aCopy); // "a", "b", "c", "d", "e", "f"
console.log(aCopy === arr); //false
/*
上面数组拷贝后为何比对时返回false???
不是true,这和数组存储的原理有关。
实际上数组是存储每一个值对应的位置。假设a=[1,2],实际上对应着a[0]指向1,
a[1]指向2。b=a.slice(),只是拥有同样的指向,但不是同一个数组。
*/
// push数组末尾插入元素,pop删除数组末尾元素
var arr = [1, 2];
arr.push('a','b');
console.log(arr); //1, 2, "a", "b"
arr.pop();
console.log(arr); //1, 2, "a"
// 空数组继续pop不会报错, 而是返回undefined
// 数组头部插入用unshift(), 删除用shift()
var arr = [1, 2];
arr.unshift('A', 'B');
console.log(arr); //"A", "B", 1, 2
arr.shift();
console.log(arr); //"B", 1, 2
// sort数组排序
var arr = ['ba', 'av', 'ab'];
arr.sort();
console.log(arr); //"ab", "av", "ba"
// 数组反转 reverse
arr.reverse();
console.log(arr); //"ba", "av", "ab"
// splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,
// 然后再从该位置添加若干元素
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
// 从索引2开始删除3个元素,然后再添加两个元素
console.log(arr.splice(2, 3, 'hi', 'go')); // "c", "d", "e"
console.log(arr); //"a", "b", "hi", "go", "f"
// 只删除, 不添加
console.log(arr.splice(2,2)); // "hi", "go"
console.log(arr); //"a", "b", "f"
// 只添加, 不删除
console.log(arr.splice(2, 0, 'hello', 'world')); //[] 空
console.log(arr); //"a", "b", "hello", "world", "f"
// concat()连接两个数组, 返回一个新的数组, 不修改原数组数据
// concat可以接收任意个元素和数组,并且自动把数组拆开,然后添加到新数组中
var arr = ['a', 'b', 'c'];
var aed = arr.concat(1, 2,[3, 4]);
console.log(aed); //"a", "b", "c", 1, 2, 3, 4
// join把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
var arr = [1, 9, 4, 5];
console.log(arr.join('-')); //1-9-4-5
// 多维数组
var arr = [[1, 2, 3], [111, 222, 333], '-'];
console.log(arr[0][1]); // 2
console.log(arr[2]); // -
JavaScript 学习笔记3_数组_20181204
最新推荐文章于 2024-09-22 09:55:42 发布