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() //后台调用

14.迭代方法:

  • every 数组中每一项都返回true才返回true
  • some 数组中有一项返回true就返回true
  • filter 返回数组中true的项组成的数组
  • forEach 每一项运行给的函数
  • map 返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,5,4,3,2,1]

// every
var everyResult = numbers.every(function(item,index,array) {
	return item > 2
})
console.log(everyResult)  // false

// some
var someResult = numbers.some(function(item, index, array){
	return item > 2
})
console.log(someResult)  //true

// filter
var filterResult = numbers.filter(function(item, index, array){
	return item > 2
})
console.log(filterResult) // [3,4,5,4,3]

// map
var mapResult = numbers.map(function(item, index, array){
	return item * 2
})
console.log(mapResult)  // [2, 4, 6, 8, 10, 8, 6, 4, 2]

// forEach
numbers.forEach(function(item, index, array) {
	// 执行一些操作
})

总结

自己不熟悉的方法

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值