4-2引用类型Array对象

let arr = new Array()
arr['abc'] = 123
arr[0]  // undefined
arr['abc']  // 123

JavaScript中一切皆对象,数组也是对象。

创建Array对象

  1. new Array()
  2. new Array(size)
  3. new Array(element0, element1, …, elementn)
var array1 = new Array()
//array1 []
var array2 = new Array(5)
//array2 (5)[empty * 5]
var array3 = new Array(1,2,3)
//array3 (3) [1, 2, 3]

Array对象属性

  1. constructor (object.constructor)
  2. length
  3. prototype
    constructor和prototype是对象都有的
    constructor属性返回的是创建此对象的数值函数的引用
    prototype 属性使您有能力向对象添加属性和方法。
//constructor demo1  判断对象类型
var test = new Array()
test.constructor == Array
// true
//constructor demo2 明确是那一段
function employee(name,job,born){
  this.name = naem;
  this.job = job;
  this.born = born;
}
var bill = new employee("wayliu","student","1999");
document.write(bill.constructor)
//function employee(name, job, born)
//{this.name = name; this.job = job; this.born = born;}

employee.prototype.salary = null
bill.salary = 20000
console.log(bill.salary)
// 20000

Array 对象方法

下面用到arr都是这个

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

</script>

1.concat()
concat() 方法用于连接两个或多个数组
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
arrayObject.concat(arrayX,arrayX,…,arrayX)

//concat demo1:连接参数
var a = [1,2,3]
var b = a.concat(4,5)
console.log(a) // (3) [1, 2, 3]
console.log(b) // (5) [1, 2, 3, 4, 5]
//concat demo2 连接一个数组
arr.concat(arr2)
//concat demo3 连接多个数组
arr.concat(arr2,arr3)

可以用es6的数组扩展替代:

var c = [...a,...b] 
c //(5) [1, 2, 3, 4, 5]

2.join (与字符串的sprit()方法对应)
数组所有元素放入字符串

console.log(arr.join()) //"George,John,Thomas" //默认为","
console.log(arr.join(".")) //"George.John.Thomas"

3.pop
尾删,并返回此元素

console.log(arr.pop) //Thomas

4.shift
头删,并返回此元素
5.push
尾追,并返回新的长度

console.log(arr.push("wayliu"))  //4

6.unshift() 头删
7.reverse() 翻转

console.log(arr.reverse()) //["Thomas", "John", "George"]

8.slice() {arrayObject.slice(start,end)}
纯函数,返回的是一个子函数

console.log(arr.slice(1))  // ["John", "Thomas"]
console.log(arr.slice(1,2)) //["John"]左开右闭
console.log(a) //["George", "John", "Thomas"] 并不会影响arr

9.sort() 排序
arrayObject.sort(sortby)
sortby可选。规定排序顺序。必须是函数。

1.调用该方法时没有使用参数,按照字符编码的顺序进行排序。
2. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
console.log(arr.sort()) //["1", "10", "1000", "25", "40", "5"]
console.log(arr)  //["1", "10", "1000", "25", "40", "5"]
//使用一个排序函数
function sortNumber(a,b)
{
return a - b
}
console.log(arr.sort(sortNumber())) //1,5,10,25,40,1000

10.splice()
为数组添加、删除元素,注意非纯函数
arrayObject.splice(index,howmany,[item1,…,itemX])
index:必须,添加、删除起始
howmany: 必须,删除个数
[item1,…,itemX]:可选,替换删除的

console.log(arr.splice(0,1,'wayliu')) //["George"],返回的是被删的
console.log(arr)  //["wayliu", "John", "Thomas"]
//添加
arr.splice(0,0,'wayliu')  // []
console.log(arr)  //["wayliu", "George", "John", "Thomas"]

11.toString()
转换为字符串并返回结果

console.log(arr.toString())  //"George,John,Thomas"
console.log(arr)  //["George", "John", "Thomas"]
//跟那个join()参数为空时表现一致,但是这个不会改变自身

12.toLocalString()
以特定地区的分隔符分隔

arr.toLocaleString() //"George,John,Thomas"

13.valueOf() //后台调用

总结

自己不熟悉的方法

  • concat() 连接数组或值
  • sort() 排序,有参数时不熟悉
  • slice() 从数组返回选定的元素 ,纯函数
  • splice() 增删数组,注意三个参数,非纯函数

可以转换为字符串的方法join()、toString()、toLocaleString()

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页