JS之对象和数组

5401241-316c230de3772c36.png

Object类型

是一种引用类型,创建Object类型有2种,1、使用new运算符;2、字面量表示

//使用new 运算符创建Object
var box = new Object(); //new 方式,也可以省略new
box.name = '对象'; //创建属性字段
box.age = 28; //创建属性字段
//字面量
var box={
  name:‘对象’,//属性可以使用字符串:‘name’
age:24,
run:function()//方法
  {
    return 'run';
  }
};

在使用字面量声明Object 对象时,不会调用Object()构造函数(Firefox 除外)。使用delete 删除对象属性delete box.name;

Array类型

数组每个元素可以保存任何类型,数组的大小也是可以调整的。创建Array 类型有两种方式:第一种是new 运算符,第二种是字面量。
1.使用new 关键字创建数组

//可省去new
var box = new Array(); //创建了一个数组
var box = new Array(10); //创建一个包含10 个元素的数组
var box = new Array('xiaoming',28,'教师','beijing'); //创建一个数组并分配好了元素

2、使用字面量方式创建数组

var box = []; //创建一个空的数组
var box = ['xiaoming',28,'教师','beijing']; //创建包含元素的数组
var box = [1,2,]; //禁止这么做,IE 会识别3 个元素
var box = [,,,,,]; //同样,IE 的会有识别问题

和Object 一样,字面量的写法不会调用Array()构造函数。(Firefox 除外)。

方法

1、toLocalString()toString()valueOf()join()

对象和数组都有toLocalString()toString()valueOf()方法.其中toString()valueOf()无论重写了谁,都会返回相同的值。数组会将每个值进行字符串形式的拼接,以逗号隔开。
默认情况下,数组字符串都会以逗号隔开。如果使用join()方法,则可以使用不同的分隔符来构建这个字符串

var box=['aaas','fds','ff'];
console.log(box.join('$'));//aaas$fds$ff

2、push()、pop()栈方法(后进先出)直接改变原数组

var box=['aaas','fds','ff'];
console.log(box.push('书序'));//返回长度,和添加的元素
console.log(box.pop());//'书序'

3、push(),shift()队列方法(先进先出)

var box=['aaas','fds','ff'];
console.log(box.push('书序'));//返回长度4,和添加的元素
console.log(box.shift());//'aaas'

ECMAScript 还为数组提供了一个unshift()方法,它和shift()方法的功能完全相反。unshift()方法为数组的前端添加一个元素。

4、重排序方法(sort()、reverse())改变原数组
reverse(),使数组逆序。
sort(),使数组有序(递增或递减)
sort 方法的默认排序在数字排序上有些问题,因为数字排序和数字字符串排序的算法是一样的。我们必须修改这一特征,修改的方式,就是给sort(参数)方法传递一个函数参数。

var box = [1,2,7,4,5]; //数组
box.sort((a,b)=>{return a-b});//递增排序
console.log(box)//(5) [1, 2, 4, 5, 7]

5、操作方法 concat、slice、splice

  • concat()方法可以基于当前数组创建一个新数组,连接作用,不改变原数组
var box = [1,2,7,4,5]; //数组
var b=box.concat(['div']);
console.log(b)//(6) [1, 2, 7, 4, 5, "div"]
console.log(box)//(5) [1, 2, 7,4, 5]
  • slice(n,m)方法可以基于当前数组获取指定区域并创建一个新数组.不改变原数组,不论n,m是正负,m都不取
var box = [1,2,7,4,5]; //数组

var a=box.slice();//复制数组
console.log(a)//(5) [1, 2, 7, 4, 5]

var b=box.slice(1);//获取下标1-最后的元素
console.log(b)//(4) [2, 7, 4, 5]

var bb=box.slice(1,4);//获取下标1-3的元素
console.log(bb)//(3) [2, 7, 4]

var bbb=box.slice(-1);//获取最后一个元素
console.log(bbb)//【5】
console.log(box)//(5) [1, 2, 7, 4, 5]
  • splice()主要用途是向数组的中部插入元素。改变原数组
    5401241-6ee701c790b309aa.png

1、删除

var box = ['1', 28, '2']; //当前数组
var box2 = box.splice(0,2); //截取前两个元素,从下标0开始,删除2个元素
console.log(box2); //返回截取的元素,(2) ["1", 28]
console.log(box); //剩下的元素,["2"]

2、插入

var box = ['1', 28, '2']; //当前数组
var box2 = box.splice(1,0,'555'); //在下标1处插入’555‘
console.log(box2); //返回截取的元素[],空,因为没有删除
console.log(box); //剩下的元素,(4) ["1", "555", 28, "2"]

3、替换(删除后又插入)

var box = ['1', 28, '2']; //当前数组
var box2 = box.splice(1,1,'555'); //把下标1处元素替换成‘555’,相当于,删除后,又插入元素
console.log(box2); //返回截取的元素[28]
console.log(box); //,返回更改后的数组(3) ["1", "555", "2"]

给数组一次性添加很多元素,借助apply和call

var x=[]
x.push.apply(x,[0,2,3])
console.log(x)//0,2,3
x.push.call(x,4,5,6)
console.log(x)//0,2,3,4,5,6

参考资料:
JavaScript高级程序设计(第3版)
W3school

猜你喜欢

转载自blog.csdn.net/weixin_33964094/article/details/87232691