JavaScript 学习笔记3_数组_20181204

/**********************************************************************
** 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]);	// -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值