Nodejs数组篇

目录

构造

字面

检查类型

转换

排序

拷贝

栈和队列


构造

var arr = new Array() // 作为对象创建,直接创建
var arr = Array()     // 作为方法执行,可以省略new
var arr = new Array   // 作为对象创建,省略括号
var arr = new Array() // 长度0, 无内容
var arr = new Array(3) // 初始容量为3的数组 
var arr = new Array('a', 'b', 'c') //['a', 'b', 'c'], 直接按照元素构造
var arr = new Array('string', false, 3) // 类型不要求单一

字面

var arr = []    //空参
var arr = [3, 4, 5] //没有长度声明,内部都是元素

检查类型

var arr = []
typeof arr //输出:object
//类型没有array,显示的是object, 不能通过类型判断是否是数组。
var arr = []
arr instanceof Array // 输出:true
var arr = []
Array.isArray(arr) // 输出:true

转换

object:

//keys:属性名称列表
//values:属性数值列表

var obj = {a:1,b:2,c:3}
var arr = Object.keys(obj)  			// [ 'a', 'b', 'c' ]
arr.length                  			// 3
var values = Object.values(obj)          // [ 1, 2, 3 ]

for(var i=0; i<arr.length; i++)
{
	console.log(arr[i]);	// a b c
}

for(var i=0; i<arr.length; i++)
{
	console.log(values[i]);	//1 2 3
}

String:

//split:分割字符串为数组,支持单字符和字符串。
var s = 'string';
var arr = s.split(''); // [ 's', 't', 'r', 'i', 'n', 'g' ]

toString:

var arr = 'array'.split(''); // [ 'a', 'r', 'r', 'a', 'y' ]
arr.toString(); // 'a,r,r,a,y'
arr.join();    // 'a,r,r,a,y'
arr.join('-'); // 'a-r-r-a-y'
arr.join('');  // 'array'

排序

var arr = [11,2,333,44,5]; // [ 11, 2, 333, 44, 5 ]
//传入匿名函数可以指定排序规则
arr.sort(function(a,b){
    return a - b;
});    //  [ 2, 5, 11, 44, 333 ]
arr.sort(function(a,b){
    return b - a;
});   //   [ 333, 44, 11, 5, 2 ]

//反转
arr.reverse(); // [ 5, 44, 333, 2, 11 ]

拷贝

简单引用,浅拷贝

var arr = [11,2,333,44,5];
var arr2 = arr; 
arr.reverse();  //  [ 5, 44, 333, 2, 11 ]
arr2            //  [ 5, 44, 333, 2, 11 ]

复制,深拷贝

var arr = [11,2,333,44,5];
var arr2 = [...arr]
arr.reverse();    //  [ 5, 44, 333, 2, 11 ]
arr2              //  [ 11, 2, 333, 44, 5 ]

栈和队列

stack:

var arr = [];
arr.push(3);  // 1
arr.push(4);  // 2
arr           // [3, 4]
var arr = [7,8,9];
arr.pop()  // 9
arr.pop()  // 8
arr.pop()  // 7

queue:

var arr = [7,8,9];
arr.shift()  // 7
arr.shift()  // 8
arr.shift()  // 9
var arr = [];
arr.unshift(7); // 1
arr.unshift(8); // 2
arr.unshift(9); // 3
arr             // [ 9, 8, 7 ]

插入:

/*
Array不要求类型统一,因此直接插入[]时当做对象进行插入。

如果想要插入数组内部数据时,需要...[]进行数据的遍历枚举。

同时,push()中可以传入多个需要插入的元素,可以一次性进行多个元素的插入。
*/
var arr = [];
arr.push([9, 99])
arr.push(...[8, 88])
arr.push(7, 77)
arr // [ [ 9, 99 ], 8, 88, 7, 77 ]

拼接:

var a = [1];
var b = [2];
var c = a.concat(b);  // [ 1, 2 ]
var d = b.concat(a);  // [ 2, 1 ]
a  // [1]
b  // [2]
var e = a.concat(9, 5);
e   // [ 1, 9, 5 ]

检索:

var arr = [1,1,1]
arr.indexOf(1) // 0

var arr = [1,1,1]
arr.lastIndexOf(1)  // 2

遍历:

var arr = [7,8,9]
var result = arr.map(function(a){
    return a - 2; // 每个人扣两块钱班费
})  //[5, 6, 7] 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值